|
本帖最后由 昨夜渡轮 于 2011-6-26 09:31 编辑
我不知道之前有没有发现,但是确实存在,我用的是1.7.3版。
比如:http://localhost/index.php/browse/index
比如:http://localhost/index.php/browse/index.html
比如:http://localhost/index.php/browse/index/
这三种格式第一种和第二种缓存文件名的MD5值是一样的(第二种是伪静态),第三种则不一样了(不一样的MD5值生成的缓存文件名就不一样,我想这是大家不希望的吧)我们打开Output缓存类源码,function _write_cache($output)这个是写入缓存的函数,以下代码
PHP复制代码
$uri = $CI->config->item('base_url').
$CI->config->item('index_page').
$CI->uri->uri_string();
$cache_path .= md5($uri);
复制代码
可以看到$CI->uri->uri_string();取到的值第一种和第二种是 /browse/index , 第三种则是 /browse/index/,这样的MD5值就不一样了,所以我改成
PHP复制代码
$uri = $CI->config->item('base_url').
$CI->config->item('index_page').
rtrim($CI->uri->uri_string(), '/');
$cache_path .= md5($uri);
复制代码
这样就去掉了末尾的斜杠,就不会出现MD5值不一样的情况了
function _display_cache(&$CFG, &$URI)这个是读缓存函数,修改同样
PHP复制代码
$uri = $CFG->item('base_url').
$CFG->item('index_page').
rtrim($URI->uri_string, '/');
$filepath = $cache_path.md5($uri);
复制代码
把这个问题说出来希望各位纠正.
|
|