使用通配符清除CodeIgniter上的缓存
CodeIgniter只指定了两种删除缓存的方法。它们是:使用通配符清除CodeIgniter上的缓存,codeigniter,caching,Codeigniter,Caching,CodeIgniter只指定了两种删除缓存的方法。它们是: $this->cache->delete('cache\u item\u id') -用于通过ID删除单个缓存 $this->cache->clean() -用于删除所有缓存 我的网站有静态和动态内容,我只想删除后者的所有缓存 我正在寻找类似于->delete(“latest*”)的东西,它将删除“latest video”、“latest video full”、“latest video music”、“latest article
$this->cache->delete('cache\u item\u id')
-用于通过ID删除单个缓存
$this->cache->clean()
-用于删除所有缓存
我的网站有静态和动态内容,我只想删除后者的所有缓存
我正在寻找类似于
->delete(“latest*”)
的东西,它将删除“latest video”、“latest video full”、“latest video music”、“latest article”等内容。有一个帮助程序可以执行此操作,您可以找到它
缓存是如何创建的
$path = $CI->config->item('cache_path');
$cache_path = ($path == '') ? APPPATH.'cache/' : $path;
.
.
.
$uri = $CI->config->item('base_url').
$CI->config->item('index_page').
$CI->uri->uri_string();
$cache_path .= md5($uri);
帮助程序自身
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if ( ! function_exists('delete_cache'))
{
function delete_cache($uri_string)
{
$CI =& get_instance();
$path = $CI->config->item('cache_path');
$cache_path = ($path == '') ? APPPATH.'cache/' : $path;
$uri = $CI->config->item('base_url').
$CI->config->item('index_page').
$uri_string;
$cache_path .= md5($uri);
if (file_exists($cache_path))
{
return unlink($cache_path);
}
else
{
return TRUE;
}
}
}
我想我已经让它工作了,调用$this->cache->cache_info()代码>将获取所有已保存缓存的多维数组。fetch数组中的数组键是cache\u item\u id
,因此我可以执行以下操作
$wildcard = 'latest';
$all_cache = $this->cache->cache_info();
foreach ($all_cache as $cache_id => $cache) :
if (strpos($cache_id, $wildcard) !== false) :
$this->cache->delete($cache_id);
endif;
endforeach;
我自己没有尝试过这个助手,但它似乎只用于基于文件的缓存,并且依赖于$db['default']['cache\u on']=TRUE
可在config/database.php
上找到。我正在使用APC,我正在通过$this->cache->save('cache\u item\u id','data\u to\u cache')添加缓存代码>。