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


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加入动态flash文件的生成的支持
Oct 09 PHP
一个简单的自动发送邮件系统(二)
Oct 09 PHP
PHP中删除变量时unset()和null的区别分析
Jan 27 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
解析crontab php自动运行的方法
Jun 24 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
php实现源代码加密的方法
Jul 11 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
PHP封装请求类实例分析【基于Yii框架】
Oct 17 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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生成静态页面详解
2006/12/05 PHP
php session 错误
2009/05/21 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
php实现的用户查询类实例
2015/06/18 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
JS远程获取网页源代码实例
2013/09/05 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
vuex实现简易计数器
2016/10/27 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python分布式环境下的限流器的示例
2017/10/26 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
python3下载抖音视频的完整代码
2019/06/05 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
《春笋》教学反思
2014/04/15 职场文书
自主招生推荐信范文
2014/05/10 职场文书
公司年底活动方案
2014/08/17 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
给客户的感谢信
2015/01/21 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫