
HTTP服务器的mod_rewrite等,它们都是基于正则表达式解析器开发的重写引擎。它们的使用方法查看它们自带的帮助即可。
方法二:自己写的代码实现动态网页静态化,方法也有好几种:
1、创建FSO对象,利用此对象将所需的内容动态创建到文件中生成HTML页面;
2、利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值 生成HTML文件;
3、使用Server.Transfer转换技术,
方法三:使用HttpWebRequest请求客户端的方式,获取返回资源,生成静态页面。一般这样只需要获取网页内容即可,其它资源可放置在服务器上,自动加载。(注:此方法缺点明显,需要大量更改匹配URL,建议慎用)
方法四:在asp中有IhttpModule接口。Ihttpmodule可以简单理解为一个可以在执行像.aspx,或者mvc中control/action前,添加我们自定义的 *** 作的东西。
我们只需要编写这么一个HttpModule就可以了,当用户第一次请求asp处理时,我们可以在ihttpmodule中拦截到这个请求,然后获取到这次请求应该返回的html代码,然后我们返回这些html给用户,并保存刚才我们获取到的html到文件内,当用户下次请求时,我们只需要直接返回我们已经保存的html文件即可
静态网页是服务器上面真实存在的页面,它不需要编译,用户就可以直接访问静态网页。在网站优化工作中,静态化页面对SEO非常友好:
1、网页打开速度快,因为是直接读取文件;
2、有利于搜索引擎的抓取收录;
3、静态网页相对比较稳定,对服务器友好;
4、一些面对数据库的攻击比如SQL注入攻击,在面对静态网页的时候常常难以从地址入手。
//基本方式
//file_put_contents()函数
//使用php内置缓存机制实现页面静态化 —output-bufferring.
//1.使用PHP文件读写功能生成静态页面
<?
$out1 = "<html><head><title>PHP网站静态化教程</title></head><body>欢迎访问PHP网站开发教程网www.leapsoul.cn,本文主要介绍PHP网站页面静态化的方法</body></html>"
$fp = fopen("leapsoulcn.html","w")
if(!$fp)
{
echo "System Error"
exit()
}
else
{
fwrite($fp,$out1)
fclose($fp)
echo "Success"
}
2.利用PHP模板生成静态页面
PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化。
在使用Smarty的情况下,也可以实现页面静态化。下面先简单说一下使用Smarty时通常动态读取的做法。
一般分这几步:
1、通过URL传递一个参数(ID)
2、然后根据此ID查询数据库
3、取得数据后根据需要修改显示内容
4、assign需要显示的数据
5、display模板文件。
Smarty静态化过程只需要在上述过程中添加两个步骤。
第一:在1之前使用 ob_start() 打开缓冲区。
第二:在5之后使用 ob_get_contents() 获取内存未输出内容,然后使用fwrite()将内容写入目标html文件。
//3.用PHP输出控制函数(Output Control)/ob缓存机制生成静态页面<?
ob_start()
echo "<html>".
"<head>".
"<title>PHP网站静态化教程</title>".
"</head>".
"<body>欢迎访问脚本之家,本文主要介绍PHP网站页面静态化的方法</body>".
"</html>"
$out1 = ob_get_contents()
ob_end_clean()
$fp = fopen("leapsoulcn.html","w")
if(!$fp)
{
echo "System Error"
exit()
}
else
{
fwrite($fp,$out1)
fclose($fp)
echo "Success"
}
?>
//或者
<?php
$gid = $_GET['gid']+0//商品id
$goods_statis_file = "goods_file_".$gid.".html"//对应静态页文件
$expr = 3600*24*10//静态文件有效期,十天
if(file_exists($goods_statis_file)){
$file_ctime =filectime($goods_statis_file)//文件创建时间
if($file_ctime+$expr-->time()){//如果没过期
echo file_get_contents($goods_statis_file)//输出静态文件内容
exit
}else{//如果已过期
unlink($goods_statis_file)//删除过期的静态页文件
ob_start()
//从数据库读取数据,并赋值给相关变量
//include ("xxx.html")//加载对应的商品详情页模板
$content = ob_get_contents()//把详情页内容赋值给$content变量
file_put_contents($goods_statis_file,$content)//写入内容到对应静态文件中
ob_end_flush()//输出商品详情页信息
}
}else{
ob_start()
//从数据库读取数据,并赋值给相关变量
//include ("xxx.html")//加载对应的商品详情页模板
$content = ob_get_contents()//把详情页内容赋值给$content变量
file_put_contents($goods_statis_file,$content)//写入内容到对应静态文件中
ob_end_flush()//输出商品详情页信息
}
?>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)