CodeIgniter文档只指定了两种删除缓存的方法。他们是:
$this->cache->delete('cache_item_id')
- 用于通过 ID 删除单个缓存
$this->cache->clean()
- 用于删除所有缓存
我的网站有静态和动态内容,我只想删除后者的所有缓存。
我正在寻找类似的东西->delete("latest*")
会删除“最新视频”、“最新视频有趣”、“最新视频音乐”、“最新文章”等。
CodeIgniter文档只指定了两种删除缓存的方法。他们是:
$this->cache->delete('cache_item_id')
- 用于通过 ID 删除单个缓存
$this->cache->clean()
- 用于删除所有缓存
我的网站有静态和动态内容,我只想删除后者的所有缓存。
我正在寻找类似的东西->delete("latest*")
会删除“最新视频”、“最新视频有趣”、“最新视频音乐”、“最新文章”等。
我想我已经成功了,调用$this->cache->cache_info();
将获取所有已保存缓存的多维数组。fetch 数组中的数组键是,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;
有一个助手可以做到这一点,你可以在这里找到它。
缓存是如何创建的
$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
他的博客。
用法:
delete_cache('/blog/comments/123');