zoukankan      html  css  js  c++  java
  • CodeIgniter的缓存小记

        最近接触到了CodeIgniter开源轻量级架构,集合了开发中常用的类和功能函数,关于CodeIgniter的缓存总结有以下几点:

        1. 数据库缓存

        数据库缓存主要是针对于SELECT查询

    复制代码
    // 打开缓存开关
    $this->db->cache_on();
    $query1 = $this->db->query("SELECT * FROM mytable");

    // 使下面这条查询不被缓存
    $this->db->cache_off();
    $query2 = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");

    // 再次打开缓存开关
    $this->db->cache_on();
    $query3 = $this->db->query("SELECT * FROM another_table");
    复制代码

          这样query1和query3就被缓存在文件中了,缓存的路径根据您的URL而定,如example.com/index.php/blog /comments的页面, 缓存系统会把所有生成的缓存文件放进一个以 blog+comments做为名称的文件夹里. 如果您要删除关于刚才提到的这个例子与之对应的缓存文件 需要执行以下代码:

    $this->db->cache_delete('blog', 'comments');//$this->db->cache_delete('blog', 'comments')#来删除缓存

         如果要清除所有数据库缓存:

    $this->db->cache_delete_all();

        *其cache模式在于针对不同的uri就会生成cache文件,如果URL中参数不同,则 cache文件就会不同,从而产生了漏洞。如果访问者构建自动生成URI,不断向服务器发起请求,就会瞬间产生大量的垃圾文件,导致系统文件臃肿。

        2. 页面缓存

    $this->output->cache(n); // 请确保application/cache可写

         n 是你希望缓存更新的 分钟 数。可以使用 m/60 来精确到秒,例如 1/60 ,则是精确到 1秒
      

        3. 序例化缓存到文件

    复制代码
    $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));

    if ( ! $foo = $this->cache->get('foo'))
    {
    echo 'Saving to the cache!<br />';
    $foo = 'foobarbaz!';

    // Save into the cache for 5 minutes
    $this->cache->save('foo', $foo, 300);
    }

    echo $foo;
    复制代码
  • 相关阅读:
    白话经典算法系列之中的一个 冒泡排序的三种实现
    Spring3.0 AOP 具体解释
    Android中Preference的使用以及监听事件分析
    Java中的匿名内部类
    【剑指offer】二叉树中和为某一值的路径
    Haskell 差点儿无痛苦上手指南
    Oracle Minus 取差集
    Windows Mobile 6.0 SDK和中文模拟器下载
    caffe源代码分析--math_functions.cu代码研究
    代码阅读分析工具Understand 2.0试用
  • 原文地址:https://www.cnblogs.com/webu/p/2774749.html
Copyright © 2011-2022 走看看