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


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 相关文章推荐
PHP4实际应用经验篇(6)
Oct 09 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
php一个解析字符串排列数组的方法
May 12 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
功能强大的php分页函数
Jul 20 PHP
php 获取文件行数的方法总结
Oct 11 PHP
PHP Header失效的原因分析及解决方法
Nov 16 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP中header用法小结
2016/05/23 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
python判断字符串是否纯数字的方法
2014/11/19 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
python实现文件快照加密保护的方法
2015/06/30 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python使用多进程的实例详解
2018/09/19 Python
Python魔法方法功能与用法简介
2019/04/04 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
Python编写单元测试代码实例
2020/09/10 Python
高中毕业的自我鉴定
2013/12/09 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
机械制造专业毕业生求职信
2014/03/02 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
日语系毕业求职信
2014/07/27 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
实习介绍信范文
2015/05/05 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
校园运动会广播稿
2015/08/19 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书