问候,
我正在编写一个CI Web应用程序,它实现了标准文件缓存功能:
$this->output->cache(n);
我正在使用细分和查询字符串参数的组合,结果似乎遇到了问题。我在用例和输出类代码中看到的是缓存仅基于段。因此,http://www.example.com/segment/?q=foo和http://www.example.com/segment/?q=bar被视为相同的请求。
是否有人对如何编辑url_helper,Output类或CI基类有任何见解或建议,以便上面的示例处理 example.com/segment/?q=foo 和< strong> example.com/segment/?q=bar 作为单独的唯一请求,并将响应分别存储在单独的文件中?
答案 0 :(得分:4)
这可以使用查询字符串修复codeigniter缓存 codeigniter cache with querystring
它是泰语页面,但您可以复制该代码并将其放在application / core / MY_Output.php中:)
答案 1 :(得分:1)
这里有一些代码可以覆盖Codeigniter的Output类,这似乎对我有用。
创建文件application / core / MY_Output.php,复制Output.php中的_write_cache()和_display_cache()函数并更新如下:
class MY_Output extends CI_Output {
function __construct() {
parent::__construct();
}
function _write_cache($output) {
....
$uri = $CI->config->item('base_url').
$CI->config->item('index_page').
$CI->uri->uri_string();
// append querystring
$qs = (empty($_SERVER['QUERY_STRING'])) ? '' : '?'.$_SERVER['QUERY_STRING'];
$uri .= $qs;
// append querystring
....
}
function _display_cache(&$CFG, &$URI)
....
$uri = $CI->config->item('base_url').
$CI->config->item('index_page').
$URI->uri_string;
// append querystring
$qs = (empty($_SERVER['QUERY_STRING'])) ? '' : '?'.$_SERVER['QUERY_STRING'];
$uri .= $qs;
// append querystring
....
}
答案 2 :(得分:1)
进入config / config.php
你应该像这样启用cache_query_string
$config['cache_query_string'] = TRUE;
考虑所有查询参数。 请注意,这可能会导致为同一页面反复生成大量缓存文件。
答案 3 :(得分:-1)
如果_GET的值为空,则应缓存
if(!$_GET)
$this->output->cache(0);