PHP页面缓存示例:减轻CPU和MYSQL负担
来源:互联网 发布:ios10怎么设置2g网络 编辑:程序博客网 时间:2024/06/06 19:37
正 文:
刚做完php页面cache方面的东西,做一下笔记:ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;
ob_get_contents():用来获取页面缓存中的内容,获取到以后呢,我们就可以想怎么处理这些内容都行了,过滤字段啦,匹配内容啦,都可以~~~ :)
ob_end_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。首先,设定过期时间,如果要求缓存文件2个小时过期,就可以设定cache_time为3600*2;通过filectime()来获取缓存文件的创建时间(或 filemtime()获取修改时间),如果当前时间跟文件的创建时间超过限定的过期时间,就可以通过上面三个函数,首先从数据库中取出数据,然后开始缓存ob_start(),然后把要生成的页面的html代码写在缓存中,缓存结束后通过ob_get_contents()获取到缓存的内容,然后通过fwrite把缓存内容写到静态页面html。如果未过期,直接读取cache中的静态页面即可,避免了大量的数据库访问。下面做个示例来说明PHP页面缓存技术:
刚做完php页面cache方面的东西,做一下笔记:ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;
ob_get_contents():用来获取页面缓存中的内容,获取到以后呢,我们就可以想怎么处理这些内容都行了,过滤字段啦,匹配内容啦,都可以~~~ :)
ob_end_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。首先,设定过期时间,如果要求缓存文件2个小时过期,就可以设定cache_time为3600*2;通过filectime()来获取缓存文件的创建时间(或 filemtime()获取修改时间),如果当前时间跟文件的创建时间超过限定的过期时间,就可以通过上面三个函数,首先从数据库中取出数据,然后开始缓存ob_start(),然后把要生成的页面的html代码写在缓存中,缓存结束后通过ob_get_contents()获取到缓存的内容,然后通过fwrite把缓存内容写到静态页面html。如果未过期,直接读取cache中的静态页面即可,避免了大量的数据库访问。下面做个示例来说明PHP页面缓存技术:
<?php
$_time =10;
$dir="D:\\php\\";function cache_start($_time, $dir)
{
$cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
$cachetime = $_time;
ob_start();
if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
{
include($cachefile);
ob_end_flush();
exit;
}
}function cache_end($dir)
{
$cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
}cache_start($_time, $dir);
//以下是输出的内容,放在cache_start和cache_end两个方法之间
for ($i=0;$i<5;$i++)
{
echo $i;
sleep(1);
}
cache_end($dir);
?>
$_time =10;
$dir="D:\\php\\";function cache_start($_time, $dir)
{
$cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
$cachetime = $_time;
ob_start();
if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
{
include($cachefile);
ob_end_flush();
exit;
}
}function cache_end($dir)
{
$cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
}cache_start($_time, $dir);
//以下是输出的内容,放在cache_start和cache_end两个方法之间
for ($i=0;$i<5;$i++)
{
echo $i;
sleep(1);
}
cache_end($dir);
?>
- PHP页面缓存示例:减轻CPU和MYSQL负担
- 缓存PHP页面的代码,可以减轻CPU和MYSQL负担
- 减轻JavaScript测试和调试负担
- 减轻JavaScript测试和调试负担
- 减轻JavaScript测试和调试负担
- php将mysql中jpeg图片取出后直接缩小然后传给客户端,减轻网络传输负担
- php将mysql中jpeg图片取出后直接缩小然后传给客户端,减轻网络传输负担
- 减轻胰岛素负担*
- StringBuffer帮你减轻Java的负担
- 减轻临时文件对VSS的负担
- StringBuffer帮你减轻Java的负担
- StringBuffer帮你减轻Java的负担
- 优先使用工具来减轻编程负担
- IIS优化,为Web减轻负担(转)
- StringBuffer帮你减轻Java的负担
- StringBuffer帮你减轻Java的负担
- 减轻数据库负担之url重写
- 如何为你的Activity减轻负担
- 字符集和字符编码
- myeclipse+jboss创建Ejb/EAR详细步骤
- 改进MySQL Order By Rand()的低效率
- RGBA(转)
- 快速搭建国际站开发环境
- PHP页面缓存示例:减轻CPU和MYSQL负担
- 动态分区分配-首次适应算法
- 程序员的情书【转】
- WIN7 IIS FTP服务器
- Table边框使用总结 ,只显示你要显示的边框
- eclipse清除workspace历史记录
- 英语练习 141 Guess What
- 从JUnit3升级到JUnit4
- 云端安全的优势与风险