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


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 相关文章推荐
什么是MVC,好东西啊
May 03 PHP
PHP教程 变量定义
Oct 23 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
Aug 10 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
PHP写API输出的时用echo的原因详解
Apr 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
PHP代码优化的53个细节
2014/03/03 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
php轻松实现文件上传功能
2016/03/03 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
php 浮点数比较方法详解
2017/05/05 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
党员干部公开承诺书
2014/03/26 职场文书
学生请假条格式
2014/04/11 职场文书
模特大赛策划方案
2014/05/28 职场文书
525心理活动总结
2014/07/04 职场文书
会议主持人开场白台词
2015/05/28 职场文书
东京审判观后感
2015/06/01 职场文书
2019财务转正述职报告
2019/06/27 职场文书