社区
基础编程
帖子详情
急!动态网页静态化的怎么来处理?????
yhycsb2001
2005-01-17 05:33:13
哪位好心的大哥知道 ,动态网页静态化的技术请告之小弟
...全文
569
11
打赏
收藏
急!动态网页静态化的怎么来处理?????
哪位好心的大哥知道 ,动态网页静态化的技术请告之小弟
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yhycsb2001
2005-01-21
打赏
举报
回复
谢谢楼上各位!
请问伪静态页面与动态网站静态化有什么区别??
mrshelly
2005-01-21
打赏
举报
回复
伪静态页面 有利于GOOGLE等搜索引擎的录用。
而真正的静态除了上述用途外,最主要还是减轻HTTP并发访问时对数据库的压力~~~~
ddboy
2005-01-19
打赏
举报
回复
楼上的把事情说得太简单了,其实生成表态文件是件很容易的事情,你你要重新组织这些文件才麻烦,建议你直接下载个内容管理系统还好一些。
mrshelly
2005-01-18
打赏
举报
回复
建议用唠叨提到的伪静态页面。
xuzuning
2005-01-18
打赏
举报
回复
不知楼主想问的是生成静态文件还是伪装静态
erldy
2005-01-18
打赏
举报
回复
用libTemplate实现静态网页的生成
作者:iwind
原来在dev-club发表的一篇文章,将怎么用模板处理程序PHPlib 中的template.inc实现静态网页的生成,呵呵,居然被列入精华,并被多个网站转载,想来这是荣幸。其实网上这方面的东西很多了,我上此发布的所谓IAMS( iwind 文章管理系统),里面也有,有心人可以看一下。下面我只是简要在总结一次。
现在一般说生成静态网页的方法有三种,一个是配置服务器,大家可以到http://www.devarticles.com/c/b/PHP/ 去找找看,对于这个很多地方都有的。另外一个是用ob_函数控制输出。方法如下:先用ob_start();打开输出缓冲器,然后是对数据的分析,操作等等,跟着用ob_get_contents();获取缓冲区的内容,然后再写入文件。根据这个步骤,可以写出以下程序:
<?php
ob_start();
//主体部分,数据操作,处理,输出等等。。。
require”global.php”;
mysql_connect(“localhost”,”root”,””);
…..
//获取缓冲区内容
$contents=ob_get_contents();
//如果不想输出任何东西,可以加上这句
ob_end_clean();
//写入目的文件
$fp=@fopen($targetFile,”w+”) or die(“打开文件时出错”);
fwrite($fp,$contents);
?>
这样就把这个动态页面的内容写入了静态页面,$targetFile.像有的网站首页内容很多,要调用n多个查询语句时,不妨定时生成静态网页,既大幅提高了访问速度,也减轻了服务器负担。
你可以看出来,我用ob_只是处理单个页面,对于批量写入或更新多个页面,这个方法就不行了。这就是我要讲的第三种方法,用模板。模板是个好东东,现在大家都或多或少在用它,建议还不会简单模板处理的网友,花点时间去学它,一般的模板处理程序都很简单的。用模板实现静态网页的生成是非常简单的,方法就是获取分析结果,把分析结果写入文件。下面就以PHPlib中的template.inc来谈谈如果用模板生成静态网页。
一, 修改template.inc
加入以下的几个函数:
//将分析结果保存到文件中去
function savetofile ($dir,$varname){
$data=$this->finish($this->get_var($varname));
$fp=fopen($dir,"w+");
fwrite($fp,$data);
}
//清除已赋值数组
function renew(){
$this->varkeys=array();
$this->varvals=array();
$this->file=array();
}
第一个函数是结果保存到静态文件中,第二个是把所有的模板分析变量都置为空,以免批量处理时相互影响。
二,实现静态网页生成。
<?php
$itpl->set_file(“main”,”mian.tpl”);
//分析模板变量
…..
//分析main?mains
$tpl->parse("mains","main");
//把分析结果mains存入main.html
$tpl->savetofile("main.html","mains");
//置空
$tpl->renew();//至关重要
?>
呵呵,是不是很简单,main.html就是我们要的内容。下面是一个结合数据库的例子,并用函数封装了起来。
<?php
//$aid是数据库中的文章id,$table是表名称,$template是模板地址,$tpl是template.inc的一个实例
//每一个aid对应一个静态网页地址,都存在一个数据表中
//表的结构类似于 aid target title
// 1 a1.html ….
// 2 a2.html ….
// 3 a3.html ….
function staticInfo($aid){
global $table,$template,$tpl;
//查询数据库
$res=mysql_query(“select * from $table where aid=’$aid’”);
//取出数据
$array=mysql_fetch_array($res);
//读静态网页地址,标题。
$target=$array[“target”];
$title=$array[“title”];
//分析模板
$tpl->set_file(“main”,$template);
//把模板中的{title}变量换成$title
$itpl->set_var(“title”,$title”);
//分析整个模板
$itpl->set_var(“mains”,”main”);
//把mains写入文件
$tpl->savetofile($target,"mains");
//置空
$tpl->renew();
}
?>
这样我们就可以用函数staticInfo()把我们想要处理的任一篇文章都生成静态网页。表$target里也可以包含文章内容,作者,来源等等,方法是一样的。
三,更新静态网页
一篇文章加入数据库后,由于一些原因我们总要修改一些文章。这时候,只要把相应的静态网页重新生成一次即可。这是非常方便的,因为表中已经有了静态网页的目标地址target字段。
可以看出关键所在,一篇文章生成静态网页的关键所在就是$template(模板地址),$target(目标地址)。前者,我们可以先确定,后者可以由你随心所欲的为每篇文章设置一个地址。常用的有1,时间戳 2,时分秒 3,根据文章id。因为这些重复的机会会非常小的。
四,批量生成静态网页.
有了单个文章生成的静态网页的函数了,那么批量生成是非常简单的。就是获取所有的文章aid,然后套入函数即可。
<?php
//引用模板类
require”template.inc”;
//引入函数
require”functions.php”;
//一些变量的定义
$table=”art”;
$template=”template/info.tpl”;
$tpl=new Template(“.”);
//连接mysql,选择数据库
mysql_connect(“localhost”,”root’,””);
mysql_select_db(“article”);
//发送查询语句
$res=mysql_query(“select aid from $table”);
while($r=mysql_fetch_array($res)){
$aid=$r[“aid”];
//生成静态网页
staticInfo($aid);
}
//结束
echo”所有静态网页更新/生成成功”;
?>
上面就是完整的例子。我们做cms的流程可以如下:
1,记者发稿(把稿件内容放入数据库)
2,编辑审查(如果他认为可以发布,那么就可以把这些内容生成静态网页)
3,退回稿件(把生成的静态网页删除,把数据库中的内容删除)
然后,我们访问到的网站内容就都是静态的了。一个问题就是,这种方法会不会占用很多空间内?http://www.csdn.com.cn 有上千篇文章了,只占用了20M空间。反过来说,如果你有10000篇文章的话,你不会吝啬到只买200M的空间吧?
或许你对生成静态的文章列表感到困惑,其实方法是一样的,就是 计算页码? 分析每个页码的内容 ? 写入文件。 分析每个页码的内容,当然是写个函数咯,如果你一页一页的生成,恐怕被人嘲笑 ^_^。
静态网页不仅仅是可以减轻服务器负担,提高访问速度,也可以方便地做镜像网站,方便地备份,减少被攻击损失程度,加快还原速度。当然静态网页也会给大家带来诸多不便的地方,你需要在动态和静态之间做出平衡,
也可以在静态网页中加入js调用的php代码,来达到计数,即时更新等目的。(完)
yhycsb2001
2005-01-18
打赏
举报
回复
给出例子者,给满分
yhycsb2001
2005-01-17
打赏
举报
回复
ashchen能不能给个例子吗???!
ashchen
2005-01-17
打赏
举报
回复
一般是cms干的事
主要在文件名和模板处理,其他不难
yhycsb2001
2005-01-17
打赏
举报
回复
请问erldy大哥有没有例子让小弟参考
erldy
2005-01-17
打赏
举报
回复
就是把相关的数据生成静态页面
找个例子研究研究拉
网上购物商城
静态
页面模板
希望大家能用到 只是个模版 我真是
急
需下载资源大家别见怪
php如何转换成html,php
动态
网页
怎么转换成html
静态
页面
php
动态
网页
怎么转换成html
静态
页面虽然我们都喜欢页面更好看一些的
动态
页面,但是
静态
页面也有这无法替代的作用。接下来就一起看看PHP
动态
页面怎么转换为HTML
静态
页面吧!更多内容请关注应届毕业生网!当
动态
网页
遇上搜索引擎虽然
动态
网页
相比于
静态
页面拥有许多优势,但它在搜索引擎的检索上却碰了个大钉子。无论任何一家网站,尤其是那些以营销为目的的企业网站,没有谁会希望自己的
网页
无法被搜索引擎检索到。但...
文心一言 vs ChatGPT!普通人的机会在哪里?
近日,百度发布了国内第一款人工智能聊天机器人【文心一言】,一时间服务器挤爆登上热搜,引发热议。不过有好事者把文心一言与chatGPT-4作比较,得出这样的结论。????对于此,我只能说:正视差距,多些耐心。越来越多的大语言模型被发布,不管是chatGPT还是文心一言,这就真的代表着人工智能时代悄然到来。普通程序员如何在人工智能时代站稳脚跟,谋求发展?为大家提供一个思路:【用chatGPT写爬虫接私单】单...
静态
html新闻页面,常见的首页
静态
新闻列表是如何生成的?
方法:把首页的
静态
页面也重新生成一个,让它指向你生成的新闻
静态
页访问地址。其实你缺少的是一个整体的设计。你设计当初应该说要考虑好他们之间的关系。我现在可以提供2种方法:1.根据
动态
页访问地址和参数来命名
静态
页(也就是建立
动态
地址与
静态
地址的转换公式)如:/user/userDetail.aspx?id=6这样的地址我转换后变成 /user/userDetail_id6.html新闻/newsDet...
Next.js的
静态
生成和服务端渲染,你搞懂了吗?
好了,到这里,你应该对Next.js的
静态
生成和服务端渲染有了更深入的理解。记住,没有绝对的好坏之分,关键是要根据你的具体需求来选择合适的渲染策略。下次如果有人问你"Next.js的
静态
生成和服务端渲染有什么区别",你就可以自信满满地说:“哦,那不就是build时拍照和每次出门
化
妆的区别吗?好了,今天的课程到此结束。下课!别忘了课后练习:试着在你的Next.js项目中混合使用这两种渲染方式,看看效果如何。加油,相信你一定能成为Next.js渲染大师!
基础编程
21,891
社区成员
140,343
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章