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


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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
建立动态的WML站点(二)
Oct 09 PHP
利用static实现表格的颜色隔行显示
Oct 09 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
Laravel 5框架学习之表单
Apr 08 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
jQuery+php简单实现全选删除的方法
Nov 28 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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下禁止php文件被直接访问的解决方案
2013/04/25 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
php创建多级目录的方法
2015/03/24 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
培养自己的php编码规范
2015/09/28 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
详解Vue方法与事件
2017/03/09 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
vue组件name的作用小结
2018/05/23 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Python中正则表达式的详细教程
2015/04/30 Python
python实现八大排序算法(2)
2017/09/14 Python
Python中Threading用法详解
2017/12/27 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
C#实现启动一个进程
2016/10/01 面试题
新课培训心得体会
2014/09/03 职场文书
名人演讲稿范文
2014/09/16 职场文书
教师见习总结范文
2015/06/23 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android
Python利用capstone实现反汇编
2022/04/06 Python