使用通配符清除CodeIgniter上的缓存

时间:2013-06-06 10:11:00

标签: codeigniter caching

CodeIgniter documentation仅指定了两种删除缓存的方法。他们是:

$this->cache->delete('cache_item_id')   - 通过ID

删除单个缓存

$this->cache->clean()   - 用于删除所有缓存

我的网站有静态和动态内容,我只想删除后者的所有缓存。

我正在寻找类似->delete("latest*")的内容,删除“最新视频”,“最新视频搞笑”,“最新视频音乐”,“最新文章”等。

2 个答案:

答案 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');