<?php
define('CACHE_PATH', $_SERVER["DOCUMENT_ROOT"]."/cachefiles/");
// how long to keep the cache files (hours)
define('CACHE_TIME', 12);
// return location and name for cache file
function cache_file()
{
return CACHE_PATH . md5($_SERVER['REQUEST_URI']);
}
// display cached file if present and not expired
function cache_display()
{
$file = cache_file();
// check that cache file exists and is not too old
if(!file_exists($file)) return;
if(filemtime($file) < time() - CACHE_TIME * 3600) return;
// if so, display cache file and stop processing
readfile($file);
exit;
}
// write to cache file
function cache_page($content)
{
if(false !== ($f = @fopen(cache_file(), 'w'))) {
fwrite($f, $content);
fclose($f);
}
return $content;
}
// execution stops here if valid cache file found
cache_display();
// enable output buffering and create cache file
ob_start('cache_page');
?>
上面的代码使用随机名称
创建缓存e.g。
4c556ca729a88177e72946a4c3732f62
a87aef8e1d11cee944a8854ab8377ac6
85f2e557d6b483fc06db804d35e6580f
如何使用实际页面名称存储缓存页面,例如
家庭4c556ca729a88177e72946a4c3732f62
约-a87aef8e1d11cee944a8854ab8377ac6
我-85f2e557d6b483fc06db804d35e6580f
答案 0 :(得分:1)
OP的问题可以在cache_file()
方法中找到。此方法在查找或创建新文件时处理高速缓存文件名称的构建。
$_SERVER['REQUEST_URI']
将返回整个页面和变量(例如/index.php?var=1
)。
在cache_file()
中,它通过获取请求的MD5
哈希并构建新文件的完整路径来构建名称。
CACHE_PATH . md5($_SERVER['REQUEST_URI']);
OP的请求是修改在缓存文件名中显示home / about / me的请求。这可以通过解析名称的URI或仅使用文件名来完成。我将不使用重新布线http://domain.tld/index.php
作为示例。
basename(__FILE__, ".php"); //gives index on index.php
使用它,我们然后修改
CACHE_PATH .basename(__FILE__, ".php") . "-" . md5($_SERVER['REQUEST_URI']);
以下将给出
../path/to/cache/index-{md5hash}