php网站怎么缓存,php网站数据缓存

缓存的作用

有很多工具可以提高网站的访问速度和性能。比如eAccelerator 和 APC,然而,这些都需要在网站的服务器上安装,比较麻烦。

使用PHP编码,我们可以很方便地缓存一个网页,对于那些使用数据库驱动或者是高频率查询数据库的网站,是非常有帮助的。

Output Control 函数

Output Control 函数可以实现缓存文件的效果,利用ob_start(打开输出控制缓冲),ob_get_contents(返回输出缓冲区的内容),将请求的输出结果,保存到缓存文件,下一次请求的时候,如果缓存文件存在并且不过期,则返回缓存文件保存的内容。减少数据查询等操作,提高访问效率。

简单的示例

首先我们需要建立一个文件夹,作为存储缓存文件使用,确保拥有读/写权限。

下一步是创建一个cache.php文件,代码如下:<?php

// 缓存文件的有效时间,秒

$cache_expires = 3600;

// 生成缓存文件的目录

$cache_folder = "/home/usr/www/cache/";

// 检查缓存文件是否有效

function is_cached($file) {

global $cache_folder, $cache_expires;

$cachefile = $cache_folder . $file;

$cachefile_created = (file_exists($cachefile)) ? @filemtime($cachefile) : 0;

return ((time() - $cache_expires) < $cachefile_created);

}

// 读取缓存文件的内容

function read_cache($file) {

global $cache_folder;

$cachefile = $cache_folder . $file;

return file_get_contents($cachefile);

}

// 写入内容到缓存文件

function write_cache($file, $out) {

global $cache_folder;

$cachefile = $cache_folder . $file;

$fp = fopen($cachefile, 'w');

fwrite($fp, $out);

fclose($fp);

}

// 开始:用请求地址的 md5 作为文件名

$cache_file = md5($_SERVER['REQUEST_URI']) . ".html";

// 先检查缓存文件是否已生成,并且有效,如果为 true,直接读取内容,并完成此请求、退出

if (is_cached($cache_file)) {

echo read_cache($cache_file);

exit();

}

// 打开输出控制缓冲

ob_start();

现在,在你想做任何事情之前,应该先include  cache.php文件,因为如果此页面被缓存了,我们不用将做任何事情,直接将内容输出即可。如果在检查缓存文件之前,去include其他文件,或者连接数据库,这些缓存文件将没有什么用处。

最后,创建一个cache_footer.php,包含了一下代码:<?php

// 获取输出缓冲区的内容,也就是待缓存的内容

$cache_contents = ob_get_contents();

// 保存到缓存文件,以便下次使用

write_cache($cache_file, $cache_contents);

?>

你应当在php的最后一行,包含这个文件,它将能缓存这个文件。

将这2个文件组合起来,大概是这样子:<?php

// 加载缓存处理

include("cache.php");

// 链接数据库

include("config.php");

mysql_connect($db_host, $db_username, $db_password) or die(mysql_error());

mysql_select_db($db_name) or die(mysql_error());

?>

Articles

// 执行一些数据库查询

$q = mysql_query("SELECT * FROM articles ORDER BY id");

while ($r = mysql_fetch_array($q)) {

echo $r['title'];

}

?>

// 保存到缓存

include("cache_footer.php");

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值