php利用ob缓存机制实现页面静态化方法全解

首先介绍一下php中ob缓存常用到的几个常用函数

ob_start():开启缓存机制

ob_get_contents():获取ob缓存中的内容

ob_clean()清除ob缓存中的内容,但不关闭缓存

ob_end_clean() 清除ob缓存中的内容,并关闭缓存

ob_flush 清空缓存,输出内容,但不关闭缓存

ob_end_flush 清空缓存,输出内容,并关闭缓存

flush强制刷新输出缓存中的内容

按照http协议的规定,回应内容不能在回应头之前输出,所以,如果在header()函数前面有内容输出,就会出现错误,但使用了ob_start()后就会将回应内容先放在ob缓存中,不会再消息头发送之前被发送,就解决了header()报错的问题!

下面说一下用php自带的ob缓存机制实现页面静态化的方法

 1 <?php
 2
 3     $id=$_REQUEST[‘id‘];
 4
 5     //判断缓存文件是否存在,如果存在,直接输出
 6     if(file_exists(‘content‘.$id.‘.html‘)){
 7       echo file_get_contents(‘content‘.$id.‘.html‘);
 8       return;
 9     }
10
11     //开启缓存机制
12     ob_start();
13
14     //到数据库中查询所需要的内容
15     $conn=mysql_connect("localhost","root","root");
16     mysql_select(‘db‘);
17     mysql_query(‘set names utf8‘);
18
19     $sql="select content from table_name where id=$id";
20     $res=mysql_query($sql);
21     $row=mysql_fetch_assoc($res);
22     $content=$row[0];
23
24     mysql_free_result($res);
25     mysql_close($conn);
26     echo $content;
27     //将输出的内容保存到文件中,形成静态页面,在下次访问的时候,直接读取输出
28     file_put_contents(‘content‘.$id.‘.html‘,ob_get_contents());
29
30
31 ?>

如上述代码所示:

将我们查询到的内容直接保存到html文件中,如果文件存在,之间输出,如果不存在,则访问数据库,执行对应的查询过程

如果要设置文件的过期时间,可以在if语句里面加一个判断条件,用于判断缓存文件是否过期,time()-设置的过期时间

时间: 2024-10-06 00:29:06

php利用ob缓存机制实现页面静态化方法全解的相关文章

利用php的ob缓存机制实现页面静态化

首先介绍一下php中ob缓存常用到的几个常用函数ob_start():开启缓存机制ob_get_contents():获取ob缓存中的内容ob_clean()清除ob缓存中的内容,但不关闭缓存ob_end_clean() 清除ob缓存中的内容,并关闭缓存ob_flush 清空缓存,输出内容,但不关闭缓存ob_end_flush 清空缓存,输出内容,并关闭缓存flush强制刷新输出缓存中的内容按照http协议的规定,回应内容不能在回应头之前输出,所以,如果在header()函数前面有内容输出,就会

页面静态化2--- PHP缓存机制完成页面静态化

我们可以使用PHP自带的缓存机制来完成页面静态化,但在这里,需要说明一点,仅靠PHP缓存机制并不能完美的解决页面静态化,往往需要和其他页面静态技术(通常是伪静态技术)结合使用 例子: 当访问一个页面时,先判断是否存在缓存,存在则直接输出缓存文件中的内容,否则,先查询数据库,获得数据,生成缓存文件. 详解PHP缓存机制: output_buffering,常用的函数 ob_start() ob_get_contents() ob_clean() ob_end_clean() ob_flush()

Yii的缓存机制之页面缓存

页面缓存是不能通过片段缓存来实现的,因为布局和内容不能同时缓存.只能通过过滤器来生成缓存. 实现方法: 在控制器里使用过滤器来实现 function filters (){ return array( array( 'system.web.widgets.COutputCache + detail', //只针对detail有效 'duration' => 3600, //缓存时间 'varyByParam' => array('id'), //缓存依赖(通过不同的id实现不同的缓存) ),

网站页面静态化详解

URL静态化 静态化一直以来都是最基本的seo要求之一,但近一两年seo行业对是否一定要做静态化有了一些观念上的改变. 为什么静态化 现在的网站绝大多数是数据库驱动,页面由程序实时生成,而不是其的在服务器上有一个静态html文件存在.当用户访问一个网址时,程序根据url中的参数调用数据库数据,实时生成页面内容.因此动态页面相对应的url原始状态也是动态的,包含问号.等号及参数,如下面这种典型论坛的url: 3w点website点com/viewthread.php?tid=1234&&pa

学习笔记 --- 缓存、动态页面静态化、网站优化

http://www.cnblogs.com/cs_net/archive/2011/03/17/1986620.html 一.缓存 缓存(Cache)技术在软件开发过程中有着广泛的用途, 它对提升软件性能和改善客户体验有很大帮助. 所谓缓存, 是指将那些经常重复的操作结果暂时存放起来, 在以后的执行过程中, 只要使用前面的暂存结果即可. 缓存技术在日常生活中随处可见, 就拿排队买票来说吧: 买票时需要先排队, 等轮到自己了, 再告诉售票员你需要买那里的票, 售票员查询完后告诉你有还是没有. 若

解决iframe缓存机制导致页面不清除缓存不刷新页面的bug

在使用iframe时,已有页面嵌套了一个iframe页面,当这个页面提交后再次跳转到本页面时,原本iframe内的页面应该刷新数据的,结果未刷新,需要清除缓存后才刷新. 解决方案: var fresh_link=new Date().getTime();//获取当前时间戳,因为该时间戳唯一,将其加到跳转的iframe嵌套页面那,以防止iframe子页面访问过后遗留的缓存 window.open("link.html?+'fresh_link'", "_self");

php ob缓存机制

如果开启ob_start(),所有的echo输出都会保存到ob缓存中,可以使用ob系列函数进行操作,如果没有,默认情况下,在程序执行结束,会把缓存中的数据发送给浏览器 ob就是output_buffer(输出缓存)的简写.在浏览器请求一个php页面的过程中,经历了三个缓存 1.ob缓存 2.程序缓存 3.浏览器缓存 ob缓存用到的函数 ob_clean();//清理缓存 ob_start()开启缓存 ob_get_contents()获取缓存当中的内容 ob_end()关闭缓存 ob_end_c

php页面静态化方法小结

1.首先说说页面静态化的优点: ①静态化html页面提高网站访问速度: ②有利于SEO收索引擎优化,百度谷歌等收索引擎优先收录静态页面,收录的更全: ③提高安全性,静态化页面减少sql注入的攻击:而且不用承担php页面的漏洞危险: ④不用每次打开页面都请求系统数据库,提升速度并且减轻系统负担 2.页面静态实现方法: 首先写一个静态模板页面temp.php:里面代码如下: <?php include 'content.php';?><html><head><meta

PHP实现HTML页面静态化的方法

随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化. 一般情况下会从以下方面来做优化 动态页面静态化 优化数据库 使用负载均衡 使用缓存 使用CDN加速 现在很多网站在建设的时候都要进行静态化的处理,为什么网站要进行静态化处理呢?我们都知道纯静态网站是所有的网页都是独立的一个html页面,当我们访问的时候不需要经过数据的处理直接就能读取到文件,访问速度就可想而知了,而其对