用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2290|回复: 0
收起左侧

[讨论/交流] 发现CI的静态缓存另一个问题并作了下修改

[复制链接]
发表于 2011-6-26 01:51:27 | 显示全部楼层 |阅读模式
本帖最后由 昨夜渡轮 于 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);
 
复制代码


把这个问题说出来希望各位纠正.

本版积分规则