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

启用查询字符串后如何使用缓存功能?

[复制链接]
发表于 2015-3-15 17:12:17 | 显示全部楼层 |阅读模式
我的项目启用了查询字符串功能,所有我的URL是这样的:

/index.php?c=login

/index.php?c=reg

当我在reg控制器的index方法中使用

$this->output->cache(6);

生成缓存文件后不管访问那个地址都是返回的这个缓存文件。

缓存功能生成的文件名是根据URL地址来的把

难道是启用查询字符串后缓存功能把这些地址都当成一样的了么?



 楼主| 发表于 2015-3-15 17:22:06 | 显示全部楼层
我看了下Output类中的实现,有如下代码:
PHP复制代码
 
                $uri =  $this->config->item('base_url').
                                $this->config->item('index_page').
                                $this->uri->uri_string();
 
 
复制代码


在启用了查询字符串的状态下,

/index.php?c=reg

/index.php?c=login

得到的是一样的URL,所以会调用一样的缓存文件。

才会导致上面的问题。
 楼主| 发表于 2015-3-15 17:23:48 | 显示全部楼层
启用查询字符串后URL类是不是也不能使用了?

$this->uri->uri_string()

得到值明显不对。
 楼主| 发表于 2015-3-15 17:30:26 | 显示全部楼层
我将Output类修改了一下:

PHP复制代码
 
                // $uri =       $CI->config->item('base_url').
                //              $CI->config->item('index_page').
                //              $CI->uri->uri_string();
 
                $uri = $_SERVER['REQUEST_URI'];
 
 
复制代码


这样可以生成不同的缓存文件了。

这样做有什么问题么?

本版积分规则