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


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的特殊设置
Oct 09 PHP
关于Intype一些小问题的解决办法
Mar 28 PHP
PHP排序算法的复习和总结
Feb 15 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
php导出word格式数据的代码实例
Nov 25 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
Laravel实现短信注册的示例代码
May 29 PHP
PHP页面静态化――纯静态与伪静态用法详解
Jun 05 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 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
php木马攻击防御之道
2008/03/24 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
Python3 中文文件读写方法
2018/01/23 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
大学生学业生涯规划
2014/01/05 职场文书
中国文明网签名寄语
2014/01/18 职场文书
勾股定理课后反思
2014/04/26 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
营销计划书
2015/01/17 职场文书
逃课检讨书
2015/01/26 职场文书
关于使用Redisson订阅数问题
2022/01/18 Redis