利用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缓存机制实现页面静态化的方法,示例代码如下
<?php
    
        $id=$_REQUEST[‘id‘];
        
        //判断缓存文件是否存在,如果存在,直接输出
        if(file_exists(‘content‘.$id.‘.html‘)){
            echo file_get_contents(‘content‘.$id.‘.html‘);
            return;
        }
        
        //开启缓存机制
        ob_start();
        
        //到数据库中查询所需要的内容
        $conn=mysql_connect("localhost","root","root");
        mysql_select(‘db‘);
        mysql_query(‘set names utf8‘);
        
        $sql="select content from table_name where id=$id";
        $res=mysql_query($sql);
        $row=mysql_fetch_assoc($res);
        $content=$row[0];
        
        mysql_free_result($res);
        mysql_close($conn);
        echo $content;
        //将输出的内容保存到文件中,形成静态页面,在下次访问的时候,直接读取输出
        file_put_contents(‘content‘.$id.‘.html‘,ob_get_contents());

?>
       
如上述代码所示:
将我们查询到的内容直接保存到html文件中,如果文件存在,之间输出,如果不存在,则访问数据库,执行对应的查询过程
如果要设置文件的过期时间,可以在if语句里面加一个判断条件,用于判断缓存文件是否过期,time()-设置的过期时间

----转载自别人的微博

时间: 2024-12-12 08:35:47

利用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()

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

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

[转] 利用 ResultFilter 实现 Asp.net Mvc 3 页面静态化

为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于 asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过 mvc 提供的过滤器扩展点实现页面内容的文本保存,直接上代码: 1 public class StaticFileWriteFilterAttribute : FilterAttribute, IResultFilter 2 { 3 public void OnResultExecuted(ResultExecutedContex

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

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

小蚂蚁学习页面静态化(1)——静态化的原理

关于页面php文件执行阶段 语法分析-->编译-->运行 如何优化页面的响应时间 动态页面静态化 优化数据库 使用负载均衡 使用缓存 页面静态化能够解决的问题    1.减少服务器脚本的计算时间    2.降低服务器的响应时间    但是静态化不适用于内容经常变换的页面. Buffer认知 Buffer就是一个缓冲区,一个内存地址空间,用于存储数据的区域 输出流程 内存->php buffer->tcp->终端 将Php.ini中    output_buffering =

[转]PHP实现页面静态化的超简单方法

为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态页面静态化是非常有效的加速方法.(纯静态,伪静态还是需要PHP解释器的) 3.生成静态URL利于SEO,利于蜘蛛抓取和收录,有利于提升排名 优化页面响应时间方法 1.动态页面静态化 2.优化数据库 3.负载均衡 4.使用缓存等等 //动态页面静态化一般用于不经常改动的地方,频繁改动的地方一般不适用静

Yii的缓存机制之页面缓存

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

PHP页面静态化3(PHP缓存机制详解)

我们可以使用PHP自带的缓存机制来完成页面静态化,但是仅靠PHP自身的缓存机制并不能完美的解决页面静态化,往往需要和其他静态化技术(通常是伪静态技术)结合使用. output buffer是php自带缓存,可以通过配置php.ini关闭,程序缓存是一直开启状态,没法关闭.程序缓存中内容没法修改,output buffer中内容可以修改,修改完成后全部发给程序缓存. 一个网页对应一个消息,消息包括消息头和消息体,每个消息必须有消息头,消息体可以为空,如果程序中没有定义消息头,使用默认的. 由图可知