分享常见的几种页面静态化的方法


Posted in PHP onJanuary 08, 2015

什么是PHP静态化

PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。

为什么要让网页静态化

一、加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
二、有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;
三、减轻服务器负担,浏览网页无需调用系统数据库;
四、网站更安全,HTML页面不会受php相关漏洞的影响; 观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。

数据库出错时,不影响网站正常访问。
生成html文章虽操作上麻烦些,程序上繁杂些,但为了更利于搜索,为了速度更快些,更安全,这些牺牲还是值得的。

PHP生成静态HTML页面的方法

利用PHP模板生成静态页面

PHP模板实现静态化非常方便,比如安装和使用PHP Smarty实现网站静态化,也可以自己写一套模板解析规则,常见的可以模仿各类cms的模板规则。

1.使用PHP文件读写功能与ob缓存机制生成静态页面
比如某个商品的动态详情页地址是: http://xxx.com?goods.php?gid=112
那么这里我们根据这个地址读取一次这个详情页的内容,然后保存为静态页,下次有人访问这个商品详情页动态地址时,我们可以
直接把已生成好的对应静态内容文件输出出来。

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();//输出商品详情页信息
 
}
 
?>

2.使用nosql从内存中读取内容(其实这个已经不算静态化了而是缓存);

以memcache为例:

connect('memcache_host', 11211);
 
$mem_goods_content = $mem->get($goods_statis_content);
 
 
 
if($mem_goods_content){
  echo $mem_goods_content;
}else{
 ob_start();
 
 //从数据库读取数据,并赋值给相关变量
 
 //include ("xxx.html");//加载对应的商品详情页模板
 
 $content = ob_get_contents();//把详情页内容赋值给$content变量
 $mem->add($goods_statis_content,$content, false, $expr);
 ob_end_flush();//输出商品详情页信息
 
}
 
?>

memcached是键值一一对应,key默认最大不能超过128个字节,value默认大小是1M,因此1M大小满足大多数网页大小的存储。
以上就是页面静态化的相关方法,希望对朋友们有所帮助

PHP 相关文章推荐
用PHP连接MySQL代码的参数说明
Jun 07 PHP
php 404错误页面实现代码
Jun 22 PHP
用PHP将网址字符串转换成超链接(网址或email)
May 25 PHP
PHP中获取文件扩展名的N种方法小结
Feb 27 PHP
php实现图片添加水印功能
Feb 13 PHP
destoon二次开发入门示例
Jun 20 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php转换颜色为其反色的方法
Apr 27 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
Oct 23 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 PHP
php的ddos攻击解决方法
Jan 08 #PHP
php的sso单点登录实现方法
Jan 08 #PHP
PHP制作万年历
Jan 07 #PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 #PHP
CI框架中site_url()和base_url()的区别
Jan 07 #PHP
给ECShop添加最新评论
Jan 07 #PHP
php程序总是提示验证码输入有误解决方案
Jan 07 #PHP
You might like
数据库相关问题
2006/10/09 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
json2.js的初步学习与了解
2011/10/06 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
js获取css的各种样式并且设置他们的方法
2017/08/22 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
浅析python的优势和不足之处
2018/11/20 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
护士上岗前培训自我鉴定
2014/04/20 职场文书
中队活动总结
2014/08/27 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
白银帝国观后感
2015/06/17 职场文书
单位提档介绍信
2015/10/22 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫