CodeIgniter框架启动与缓存问题许多的新手都不知道如何来操作了,下面我们就一起来看一篇关于CodeIgniter框架中启用和清除缓存例子,具体如下所示。

Codeigniter支持缓存技术,以达到最快的速度。尽管CI已经相当高效了,但是网页中的动态内容、主机的内存CPU和数据库读取速度等因素直接影响了网页的加载速度。依靠网页缓存,你的网页可以达到近乎静态网页的加载速度,因为他们将程序输出的结果保存到硬盘上了。

缓存是怎么工作的?

CI支持每个页面单独缓存,而且可以设置缓存更新时间。当一个网页第一次被加载的时候,缓存文件将被保存到application/cache文件夹。下次访问的时候,系统就会直接读取缓存文件,然后返回给用户的浏览器。如果缓存文件过期,它将被删除并重新生成。

注意:Benchmark标签在使用了缓存的页面仍然可用。

启动缓存

启用缓存功能,只需要将下面的代码放入你的任何一个控制器(controller)的方法(function)内:

$this->output->cache(n);

其中n是你希望缓存更新的分钟数。可以使用m/60来精确到秒,例如1/60,则是精确到1秒 上面的代码可以放到任何一个function里面。他的出现顺序对缓存并没有影响,所以将它放在你认为最合乎逻辑的地方。一旦上面的代码放到了控制器的方法中,页面就会被缓存。 警告:由于CI存储缓存文件的方式,只有通过view文件的输出才能被缓存。 注意:在缓存文件产生之前,请确保application/cache文件夹可写。

清除缓存

如果你不再想使用缓存,仅需将上面的代码从你的controller里面删除即可。注意:这样做并不能让缓存文件立即消失,它将会自动过期并被删除。如果你想立即删除那些文件,就必须自己动手了。

可手动设置缓存开关。如果您想保留某些查询不被缓存 这个功能就十分有用。例如:

// 打开缓存开关

$this->db->cache_on();

$query = $this->db->query("SELECT * FROM mytable");

// 使下面这条查询不被缓存

$this->db->cache_off();

$query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");

// Turn caching back on

$this->db->cache_on();

$query = $this->db->query("SELECT * FROM another_table");

删除缓存文件与特定网页。如果你需要清除缓存后,更新您的数据库。

缓存系统会在缓存存放目录中建立与被访问的URL所对应的子目录,同时把缓存文件存放在那个子目录中.缓存主目录就是您在application/config/database.php 里面设置的缓存目录. 例如, 如果您正在浏览地址为 example.com/index.php/blog/comments的页面, 缓存系统会把所有生成的缓存文件放进一个以 blog comments做为名称的文件夹里. 如果您要删除关于刚才提到的这个例子与之对应的缓存文件 需要执行以下代码:

$this->db->cache_delete('blog', 'comments');

$this->db->cache_delete('blog', 'comments'),我在实际测试的时候不起作用,不知道为什么原因,不知道是不是小bug?但是下面的$this->db->cache_delete_all()是可以的,没有问题。

如果您不使用任何参数,目前的URI设置将决定什么时候应该清除/更新 该缓存。

清除所有所有的缓存文件。例子:

$this->db->cache_delete_all();

缓存小记

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!
';

$foo = 'foobarbaz!';

// Save into the cache for 5 minutes

$this->cache->save('foo', $foo, 300);

}

echo $foo;

ci mysql 缓存_CodeIgniter框架中启用和清除缓存的教程相关推荐

  1. jsx 调用php,JavaScript_JavaScript的React框架中的JSX语法学习入门教程,什么是JSX? 在用React写组件的 - phpStudy...

    JavaScript的React框架中的JSX语法学习入门教程 什么是JSX? 在用React写组件的时候,通常会用到JSX语法,粗看上去,像是在Javascript代码里直接写起了XML标签,实质上 ...

  2. ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

    本文实例分析了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患.分享给大家供大家参考,具体如下: php CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分 ...

  3. thinkphp mysql 预处理_thinkPHP框架中执行原生SQL语句的方法

    本文实例讲述了thinkPHP框架中执行原生SQL语句的方法.分享给大家供大家参考,具体如下: 怎样在thinkphp里面执行原生的sql语句? $Model = new Model();//或者 $ ...

  4. js app缓存自动刷新_如何通过清除缓存来刷新App Store中的内容

    js app缓存自动刷新 Are you finding that you're not seeing new apps on the App Store, or that updates to ap ...

  5. java 缓存 cachemanager_在java中使用cacheManager清除缓存

    是的,您的代码会清除您在cacheManager中拥有的所有缓存. ehcache-documentation说:void clearAll() 清除CacheManager中所有缓存的内容,但不删除 ...

  6. 微信小程序webview清除缓存、微信公众号h5清除缓存、页面白屏、空白、不刷新问题

    一.缓存带来的问题和原因 我们在发布新版本的时候,在打开微信小程序webview嵌套的h5页面或微信公众号h5页面时,常常会发现页面还是上个版本的旧页面或者打开直接空白 白屏了,那么为什么会存在这个问 ...

  7. 解决Intellij IDEA 一直在indexing,清除缓存后重启无效,手动清除缓存

    解决IDEA 一直 indexing 办法: 打开IDEA菜单File->Invalidate Caches / Restart中,选择Invalidate and Restart,之后会重启I ...

  8. fcpx如何清除缓存?Final Cut Pro X 清除缓存方法

    当我们制作完视频时候,会发现源文件相当大,连128的Mac Pro 也根本无法吃消,必须给它来个瘦身!给大家带来Final Cut Pro X 清除缓存的方法. 打开fcpx,选择资源库,右键在访达中 ...

  9. 微信小程序清除缓存clearStorageSync和removeStorageSync的区别 清除缓存问题 数据缓存详解

    wx.setStorage(key)和wx.setStorageSync(key) 将数据存储在本地缓存中指定的 key 中.会覆盖掉原来该 key 对应的内容.除非用户主动删除或因存储空间原因被系统 ...

最新文章

  1. create document history via code
  2. oracle报无效月份 注册表,在oracle中插入时间时出现“无效的月份”解决方法
  3. 第 190 场力扣周赛
  4. 滑动cell的时候执行动画效果
  5. 深圳,本周日,华为云开发者大会,免费报名中
  6. javascript查找关键字高亮效果
  7. SSH整合之四(页面逻辑的实现)
  8. MongoDB几个完整的库表设计实例
  9. [教程] 康盛创想 Windows (server 2003) 服务器部署标准 白丁简明版
  10. 推荐系统专利:一种信息推荐方法、系统及存储介质和终端设备
  11. 从“外行”到“里手”,长沙企业“力量矩阵”开始觉醒
  12. 计算机关机后 为何会亮,Win10系统电脑关机后主机电源灯依然亮着怎么解决
  13. 了解NLP(自然语言处理)技术
  14. Mybatis-plus 分页功能报错:除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效
  15. MATLAB - 数字信号包络线的求取
  16. 什么软件可以测试手长,心率检测专家-可以让你通过按压手指检测出心率的健康app...
  17. 设置操作系统(win10)的环境变量以便从cmd直接进入Python
  18. top.layer.open()是什么东西
  19. Maven项目缺少Maven Dependencies新的解决方法
  20. 脉冲宽度调制 matlab,关于PWM脉冲宽度调制的点滴总结

热门文章

  1. RedHat5 升级OpenSSH服务
  2. Exchaneg 2013 集成OWAS
  3. 利用python自动清除Android工程中的多余资源
  4. jQuery1.4.2新特性
  5. 学习笔记(1):uni-app实战社区交友类app开发-引入自定义图标库
  6. 轻松在阿里云上搭建Redis
  7. realme x2 深度测试打不开_realme 的产品到底是不是贴牌的?
  8. BZOJ1041:[HAOI2008]圆上的整点(数论)
  9. 第三章 Python函数
  10. MySQL系列:数据库基本操作(1)