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


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
PHP脚本数据库功能详解(上)
Oct 09 PHP
常用的php对象类型判断
Aug 27 PHP
php快速url重写 更新版[需php 5.30以上]
Apr 20 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
zf框架db类的分页示例分享
Mar 14 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
php中Swoole的热更新实现代码实例
Mar 04 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
JavaScript 事件参考手册
2008/12/24 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
Ajax基础知识详解
2017/02/17 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
python获取外网ip地址的方法总结
2015/07/02 Python
Python实现识别手写数字大纲
2018/01/29 Python
详解Django中间件执行顺序
2018/07/16 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
为什么需要版本控制?
2013/08/08 面试题
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
小学家长会邀请函
2014/01/23 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
教师节寄语2015
2015/03/23 职场文书
2016春节慰问信范文
2015/03/25 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
MySQL系列之二 多实例配置
2021/07/02 MySQL