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;

        延伸阅读:http://codeigniter.org.cn/user_guide/drivers/caching.html

                      http://justcoding.iteye.com/blog/657357

  • 相关阅读:
    contab的使用方法
    mitmproxy安装与使用
    centos安装docker
    Linux安装python3.6
    Appium 教您完美win10安装Appium1.7.2支持win客户端自动化
    解决Git建立远程分支关联时fatal the current branch master has no upstream branch 问题
    git 命令上传远程服务器步骤
    robot打开浏览器WebDriverException: Message: WebDriver:NewSession
    jmeter线程组之间数据共享设置
    缓存的那些事
  • 原文地址:https://www.cnblogs.com/hubj/p/2348546.html
Copyright © 2011-2022 走看看