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


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获取类中常量,属性,及方法列表的方法
Apr 09 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
学习使用curl采集curl使用方法
Jan 11 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
PHP中$this和$that指针使用实例
Jan 06 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
Mar 01 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 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中{}大括号是什么意思
2013/12/01 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
JsDom 编程小结
2011/08/09 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
详解如何减少python内存的消耗
2019/08/09 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
python 安装impala包步骤
2020/03/28 Python
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
偷看我的初中毕业鉴定
2014/01/29 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
软环境建设心得体会
2014/09/09 职场文书
秋冬农业生产标语
2014/10/09 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
红色影片观后感
2015/06/18 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python