我需要帮助来找出codeigniter缓存的一个问题。
我正在运行两个函数来将结果存储在缓存中。这个功能在我的模型中:
public function cacheAllCurrencies()
{
$this->db->cache_on();
$this->db->select("name,icon,currency_code");
$this->db->from("currency");
$this->db->where("status='Active'");
$cache_currency_result = $this->db->get()->result();
$this->db->cache_off();
return $cache_currency_result;
}
public function cacheAllCategory()
{
$this->db->cache_on();
$this->db->select("name,url");
$this->db->from("category");
$this->db->where("parent_category='0'");
$this->db->where("status='Active'");
$this->db->order_by('name','ASC');
$cache_category_result = $this->db->get()->result();
$this->db->cache_off();
return $cache_category_result;
}
My these two functions are called in header view like below :
$CI =& get_instance();
$CI->load->model(PUBLIC_DIR.'/commonPage','common');
$currencies = $CI->common->cacheAllCurrencies();
$categories = $CI->common->cacheAllCategory();
现在,当所有页面加载时,它会根据打开的页面创建一个缓存文件,如主页,博客,博客+ blogname等。
两个查询都在缓存文件夹中生成两个缓存文件
1580e4c2413cb09f6ed3bc7fae8cee45
- 第一个函数缓存结果
d7e2452b0424f859e1a5984bd26cbd6c
- 第二个函数缓存结果
现在,我有两个问题:
codeigniter
如何生成缓存文件名。在我的缓存中1580e4c2413cb09f6ed3bc7fae8cee45
代表货币,d7e2452b0424f859e1a5984bd26cbd6c
代表类别。我希望这个解释有意义,我希望大多数codeigniter
开发人员都有这个问题需要解决。
谢谢, 阿里
答案 0 :(得分:1)
在 Codeigniter 中,您可以使用表名清除DB的缓存 像
$this->db->cache_delete('currency');
$this->db->cache_delete('category');
同时或两个表缓存
$this->db->cache_delete('currency','category');
编辑: CodeIgniter通过md5()SQL查询加密来保存文件名
public function cacheAllCurrencies(){
$this->db->cache_on();
$this->db->select("name,icon,currency_code");
$this->db->from("currency");
$this->db->where("status='Active'");
//here you get filename
$file_name=md5($this->db->get_compiled_select());
$cache_currency_result = $this->db->get()->result();
$this->db->cache_off();
return $cache_currency_result;
}