我想创建一个缓存。在php索引的开头,我使用:
if ($docache) {
$folder_cache = dirname(__FILE__).'/cache/';
$seconds_cache = 15*60; // 15 minutes
$url_cache = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$file_cache = $folder_cache . md5($url_cache) . '.cache';
$file_cache_existe = ( @file_exists($file_cache) ) ? @filemtime($file_cache) : 0;
if ($file_cache_existe > time() - $seconds_cache ) {
@readfile($file_cache);
exit();
}
}
ob_start();
然后,在结尾:
if ($docache) {
$folder_cache = dirname(__FILE__).'/cache/';
$url_cache = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$file_cache = $folder_cache . md5($url_cache) . '.cache';
$filehandler = @fopen($file_cache, 'w');
@fwrite($filehandler, ob_get_contents());
@fclose($filehandler);
}
嗯,它起作用了…缓存文件是在我们第一次看到页面时创建的,然后我们返回,它在缓存中显示文件…问题是缓存中的文件只包含一些不可读的字符,如"<"或㶒"V"。
似乎就像如果ob_get_contents函数返回,而不是真正显示什么?我真不明白为什么!
您可以从移除错误抑制并检查输出内容开始。
您可能遇到字符编码问题。