我对网络开发更新鲜。
在我的应用程序中,我需要进行缓存,所以任何人都可以解释如何详细缓存PHP页面?
答案 0 :(得分:5)
首先在您网站的根目录下创建一个名为cache的文件夹,并使其可写。
我有一个名为caching_functions.php的文件,如下所示:
<?
$test_server = $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "localhost" || substr($_SERVER['SERVER_NAME'],0,3) == "192";
$caching = !$test_server;
function start_caching($page) {
global $caching;
$hash = md5($page);
if ($caching) {
$cachefile = "cache/".$hash.".html";
if (file_exists($cachefile)) {
include($cachefile);
echo "<!-- Cached on ".gmdate('r', filemtime($cachefile))." to ".$hash." -->";
exit;
} else {
ob_start();
return $cachefile;
}
}
}
function end_caching($cachefile) {
global $caching;
if ($caching) {
$fp = fopen($cachefile, 'w');
// fwrite($fp, ob_get_contents());
fwrite($fp, preg_replace('!\s+!', ' ', str_replace(array("\n", "\t"),"",ob_get_contents())));
fclose($fp);
ob_end_flush();
}
}
function remove_cache() {
foreach (glob($_SERVER['DOCUMENT_ROOT']."/cache/*.*") as $filename) {
unlink($filename);
}
}
?>
然后我把它放在每页的顶部:
在底部:
<? end_caching($cachefile); ?>
这使得第一个页面请求被转储到缓存文件夹。后续访问使用缓存版本,不要访问数据库或执行任何复杂的操作。
我会创建一个名为clearcache.php的页面并包含caching_functions并获取它只是为了运行remove_cache()。这样可以在需要时轻松删除缓存的文件。
这也仅在非本地时运行,因此如果要在本地进行测试,请确保将$ caching更改为1,或者仅在真实服务器上进行测试。
答案 1 :(得分:4)
PHP中的缓存可能意味着在上次调用特定函数的结果时存储该函数,以防该函数在同一个脚本中被调用多次(具有相同的参数)。
但是我认为主要且更强大的含义是存储动态生成的页面的完整输出,并在再次请求页面时提供此功能,而不是实际运行完整的PHP脚本来重新生成该内容。
对于我想要缓存的页面,我有一个AJAX命令,可以在生成页面后将内容写入数据库。它还会增加到期时间 - 比如说时间()+ 20(20秒后到期)。
然后我在页面顶部添加一个条件,以检查数据库中页面的未过期缓存。如果找到则返回,否则它将继续重新生成整页。
这篇文章帮助我入门: