CodeIgniter documentation仅指定了两种删除缓存的方法。他们是:
$this->cache->delete('cache_item_id')
- 通过ID
$this->cache->clean()
- 用于删除所有缓存
我的网站有静态和动态内容,我只想删除后者的所有缓存。
我正在寻找类似->delete("latest*")
的内容,删除“最新视频”,“最新视频搞笑”,“最新视频音乐”,“最新文章”等。
答案 0 :(得分:2)
我想我已经有了它,调用$this->cache->cache_info();
将获取所有已保存缓存的多维数组。获取数组中的数组键是cache_item_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;
答案 1 :(得分:0)
有一个助手执行此操作,您可以找到它here。
如何创建缓存
$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;
}
}
}
所有积分都转到Steven Benner
,即blog。
用法:
delete_cache('/blog/comments/123');