页面静态化3 --- 使用PHP页面缓存机制来完成页面静态化(下)操作一个案例(新闻管理系统)
2014-08-10 13:51
866 查看
案例需求:
一个新闻列表页,一个新闻详细页,要求点击一篇title的时候,生成一个静态页面,当第二次再打开这个title的链接的时候,有静态页面则取静态页面来显示。
新闻列表页:
新闻详细页:
我们要缓存的就是这个页面!
思路:
1、显示列表页。
2、给列表title添加链接
3、
①第一次点击:
点击title链接触发php程序,生成静态页面。
②第二次点击:
以上是单纯使用PHP缓存机制完成页面静态化,但如何解决新闻更新,静态页面也更新呢,和将动态网址变为静态网址
解决思路:
当数据库中新闻内容变更(增加一篇新文章,或者一篇文章的内容被修改)的时候,就让这个新闻对应的静态页面也跟着生成和变更!--通过网站的设计模板创建爱你静态页面。
真静态:
案例:在编辑人员增加一篇新闻的同时,创建一个这篇新闻页面的静态页面
在新闻列表页,当点击链接跳转到详细页面时,直接读取静态页面!
说明:当更新的时候,注意删除原来的静态文件,修改后重新生成新的静态文件取代原来的静态文件。此操作略...
总结:
①为什么静态化
②静态化的方法(使用ob缓存来实现静态化 问题1 实时性不好,有延时;问题2 请求某个查询页面时使用 PHP 动态网站)
③真静态(在添加和修改的时候,可以实时的处理静态页面,问题:如果真静态的数据是海量的就会造成真静态的HTML页面很多,占用磁盘空间大,导致系统性能大幅下降:要查询某个真静态文件会遍历这个磁盘空间。)---如果生成的真静态是海量的,那么不适合使用这个真静态技术。
③要解决真静态的问题,就要用到伪静态技术。
使用PHP缓存机制完成新闻管理系统的页面静态化 数据库表 ecs_article (新闻表) 因为新闻这些信息,并不是对实时性要求高,本身这个新闻比较稳定,内容也比较固定,所以我们考虑: 当第一个用户访问某条新闻后,我们使用PHP缓存机制把页面显示内容缓存到一个静态页面(.html)中,当下次访问时,直接访问html页面即可。
一个新闻列表页,一个新闻详细页,要求点击一篇title的时候,生成一个静态页面,当第二次再打开这个title的链接的时候,有静态页面则取静态页面来显示。
新闻列表页:
新闻详细页:
我们要缓存的就是这个页面!
思路:
1、显示列表页。
2、给列表title添加链接
3、
①第一次点击:
点击title链接触发php程序,生成静态页面。
②第二次点击:
//触发PHP程序,首先去找第一次生成的静态文件是否存在: //filemtime($filepath) => 返回该文件最后一次修改的时间 if (file_exists($html_path) && (filemtime($html_path)+30>time()) { //存在直接显示这个文件 echo file_get_contents($html_path); exit; } else { //不存在,读取数据库,生成静态文件 //根据新闻id读取对应的新闻内容 }
以上是单纯使用PHP缓存机制完成页面静态化,但如何解决新闻更新,静态页面也更新呢,和将动态网址变为静态网址
解决思路:
当数据库中新闻内容变更(增加一篇新文章,或者一篇文章的内容被修改)的时候,就让这个新闻对应的静态页面也跟着生成和变更!--通过网站的设计模板创建爱你静态页面。
真静态:
案例:在编辑人员增加一篇新闻的同时,创建一个这篇新闻页面的静态页面
$post = $_POST; // $id = M('article')->add($post); $title = $post['title']; $content = $post['content']; $id = M('article')->add($post);//框架,添加到数据库 if ($id) { //生成静态文件 //新闻详细页模板文件路径 $tpl = HTML_PATH.'/news_detail.html';//定义的新闻详细页的模板路径 //要创建的新闻页面 $newfile = HTML_PATH.CONTROLLER_NAME.'/news_detail_id'.$id.'.html';//定义的创建的真静态页面的路径 $tpl = fopen($tpl, 'r');//以只读方式打开模板页面-----关键 $newfile = fopen($newfile, 'w');//以写入方式打开新建文件-------关键 //添加这个”头“到新文件,防止乱码,防止浏览器缓存页面 $head = "<head><meta http-equiv='Content-Type' content='text/html;Charset=utf-8' /><meta http-equiv='Cache-Control' content='no-cache' /><meta http-equiv='Expires' content='-1' /><meta http-equiv='Pragma' content='no-cache' /></head>";
fwrite($handle, $head);
while (!feof($tpl)) { $con = fgets($tpl);//读取一行 //替换 $con = str_replace(array('<%title%>','<%content%>'), array($title, $content),$con); //把替换后的文件写入到新文件中 fwrite($newfile, $con); } //关闭文件句柄 fclose($tpl); fclose($newfile); echo '添加成功,并创建其对应的静态页面'; jump('新闻列表页面路径'); } else { echo '新闻添加失败,请重试...'; }
在新闻列表页,当点击链接跳转到详细页面时,直接读取静态页面!
说明:当更新的时候,注意删除原来的静态文件,修改后重新生成新的静态文件取代原来的静态文件。此操作略...
总结:
①为什么静态化
②静态化的方法(使用ob缓存来实现静态化 问题1 实时性不好,有延时;问题2 请求某个查询页面时使用 PHP 动态网站)
③真静态(在添加和修改的时候,可以实时的处理静态页面,问题:如果真静态的数据是海量的就会造成真静态的HTML页面很多,占用磁盘空间大,导致系统性能大幅下降:要查询某个真静态文件会遍历这个磁盘空间。)---如果生成的真静态是海量的,那么不适合使用这个真静态技术。
③要解决真静态的问题,就要用到伪静态技术。
相关文章推荐
- 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)
- PHP页面静态化学习笔记之三:使用PHP缓存机制完成静态化
- 看到一个新闻管理系统,看上去开源,其实是骗你使用
- 利用php的ob缓存机制实现页面静态化
- php利用ob缓存机制实现页面静态化方法全解
- 利用php的ob缓存机制实现页面静态化方法
- [转]php初级教程(七)一个新闻管理系统(准备工作)
- 使用php完成一个用户注册以及管理的demo(php实现单文件与多文件的上传)
- PHP页面静态化学习笔记之四:简易新闻系统v1.0
- PHP实战 新闻管理系统 使用到了bootstrap框架
- PHP实战 新闻管理系统 使用到了bootstrap框架
- php面向对象操作mysql数据库,简单的新闻管理系统的编写
- 使用php完成一个用户注册以及管理的demo(二)
- php页面静态化----伪静态化ob缓存使用
- sssp整合&分页之完成添加操作之显示页面&使用JPA二级缓存
- Hibernate_day01讲义_使用Hibernate完成对CRM系统中客户管理的DAO中的CRUD的操作
- 三,PHP缓存机制实现页面静态化
- 使用php完成一个用户注册以及管理的demo(三)
- 使用php完成一个用户注册以及管理的demo(一)
- 利用php的ob缓存机制实现页面静态化