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


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和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
Jul 03 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
PHP实现懒加载的方法
Mar 07 PHP
php对关联数组循环遍历的实现方法
Mar 13 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
Symfony模板的快捷变量用法实例
Mar 17 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
Aug 04 PHP
浅谈如何提高PHP代码的质量
May 28 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
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
javascript的事件描述
2006/09/08 Javascript
js 事件小结 表格区别
2007/08/13 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
Bootstrap基础学习
2015/06/16 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
Python笔记之工厂模式
2019/11/20 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
python 实现逻辑回归
2020/12/30 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
新闻学专业求职信
2014/07/28 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
2015年采购员工作总结
2015/04/27 职场文书
个人廉政承诺书
2015/04/28 职场文书
节水宣传标语口号
2015/12/26 职场文书
利用Python实时获取steam特惠游戏数据
2022/06/25 Python