Php 处理查询字符串参数时的Codeigniter缓存问题
您好 我正在编写一个CI web应用程序,它实现标准文件缓存功能,例如:Php 处理查询字符串参数时的Codeigniter缓存问题,php,caching,codeigniter,Php,Caching,Codeigniter,您好 我正在编写一个CI web应用程序,它实现标准文件缓存功能,例如: $this->output->cache(n); 我使用的是段和查询字符串参数的组合,结果似乎遇到了问题。我在用例和输出类代码中看到的是缓存完全基于段。因此,和被视为相同的请求 是否有人对如何编辑url\u帮助程序、输出类或CI基类有任何见解或建议,以便上述示例将example.com/segment/?q=foo和example.com/segment/?q=bar视为单独的,唯一请求并将响应分别存储在单独
$this->output->cache(n);
我使用的是段和查询字符串参数的组合,结果似乎遇到了问题。我在用例和输出类代码中看到的是缓存完全基于段。因此,和被视为相同的请求
是否有人对如何编辑url\u帮助程序、输出类或CI基类有任何见解或建议,以便上述示例将example.com/segment/?q=foo和example.com/segment/?q=bar视为单独的,唯一请求并将响应分别存储在单独的文件中?如果_GET的值为空,则应缓存
if(!$_GET)
$this->output->cache(0);
这可以用querystring修复codeigniter缓存
这是泰语页面,但您只需复制该代码并将其放入application/core/MY_Output.php:)这里有一些代码覆盖Codeigniter的输出类,它似乎对我有用 创建文件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
....
}
进入config/config.php
您应该像这样启用cache\u query\u字符串
$config['cache_query_string'] = TRUE;
考虑所有查询参数。
请注意,这可能会导致多次为同一页面生成大量缓存文件。Chumillas,这并不能回答问题。如果我错误地传达了这个问题,我道歉。我想让查询字符串作为缓存的相关信息。这并不像它所暗示的那样有效。缓存后(在本例中,如果加载的页面没有查询字符串),所有控制器逻辑都将被绕过,因此无论这行代码如何,都将显示缓存的页面。此外,这只是禁用缓存,而缓存不是解决方案