基于rails4.0环境

Rails 页面缓存的方法很多,最近弱弱地尝试了fragment cache,用法还算简单~@_@||

首先,查看config/environment/production.rb

config.action_controller.perform_caching = true

确保上面代码是true状态。

fragment cache是用来对页面进行片段缓存的,首先在你需要缓存的页面加上两行代码,示例如下:

<!--  views/test/index -->
<% cache do %>
…… …… <!-- 页面中需要缓存的界面代码片段 -->
<% end %>

开启服务器后,在控制台可以看到

 Read fragment views/793d6c4d2de9d1ed07625eb5944c26d4 (1.0ms)
Write fragment views/793d6c4d2de9d1ed07625eb5944c26d4 (78.0ms)

这说明已经帮你把页面进行缓存,文件名是MD5产生的32加密数

从上面可以看到,它会去寻找缓存页面,如果读不到就会添加到缓存

当你再重新刷新该缓存的页面时,在控制台可以看到

Read fragment views/793d6c4d2de9d1ed07625eb5944c26d4 (2.0ms)

会发现,这次它读到缓存页面了,所以不再write

fragment 缓存默认存放的位置是tmp/cache文件夹中,打开文件夾后看到已经被加密的缓存文件

如果你想在将缓存文件名附上id标识的话,那么只需要做小小的修改

<!--  views/test/index -->
<% cache @id do %>
…… …… <!-- 页面中需要缓存的界面代码片段 -->
<% end %>

加上@id就行~~

在控制台看到的如下:

 Read fragment views/2/793d6c4d2de9d1ed07625eb5944c26d4 (1.0ms)
Write fragment views/2/793d6c4d2de9d1ed07625eb5944c26d4 (78.0ms)

上面标识的2就是@id的值~~

当进行更新、创建、删除等操作时,需要对之前缓存页面进行清除

那么只需在controller加上下面这句,

expire_fragment((%r"#{@id}"))

切记,不要写漏了" %r ",因为生成的缓存页面是随机的MD5加密数,去查看缓存页面存放位置的时候,会发现那些文件夹和文件都是加密的,一个文件夹里有一个文件

所以用 %r"#{@id}" 可以找到@id为首的文件夾,例如:“2/(此处省略32位MD5加密数)",然后将其清除

如果想把缓存页面存于,例如:myfile/2 ,”2“表示@id的一个取值,只需要修改如下:

<!--  views/test/index -->
<% cache "myfile#{@id}" do %>
…… …… <!-- 页面中需要缓存的界面代码片段 -->
<% end %>

然后清除缓存的代码改为:

expire_fragment((%r"myfile/#{@id}"))

附:一些不错的知识链接

cache_digests: 解决层层嵌套cache问题,http://blog.xdite.net/posts/2012/09/02/cache-digest-new-strategy

几种cache方法的比较和使用:http://www.sitepoint.com/caching-cache-digest/

ruby -- 进阶学习(十二)fragment cache的更多相关文章

  1. ruby -- 进阶学习(二)paperclip上传图片

    Need to add image attachments to a model? See how with paperclip in this episode. 在命令行输入: rails g pa ...

  2. 网站开发进阶(四十二)巧用clear:both

    网站开发进阶(四十二)巧用clear:both 前言 我们在制作网页中用div+css或者称xhtml+css都会遇到一些很诡异的情况,明明布局正确,但是整个画面却混乱起来了,有时候在IE6下看的很正 ...

  3. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  4. Java进阶(五十二)利用LOG4J生成服务日志

    Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...

  5. zuul进阶学习(二)

    1. zuul进阶学习(二) 1.1. zuul对接apollo 1.1.1. Netflix Archaius 1.1.2. 定期拉 1.2. zuul生产管理实践 1.2.1. zuul网关参考部 ...

  6. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  7. Scala学习十二——高阶函数

    一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...

  8. ruby -- 进阶学习(十)自定义路由中:new, :collection和:member的区别

    学习链接:http://rubyer.me/blog/583/ RESTful风格的路由动词默认有7个(分别为:index, show, create, new, edit, update, dest ...

  9. Android进阶(十二)Fragment VS Activity

    Fragment  VS  Activity Android是在Android 3.0 (API level 11)开始引入Fragment的. 可以把Fragment想成Activity中的模块,这 ...

随机推荐

  1. python基于LeanCloud的短信验证

    python基于LeanCloud的短信验证 1. 获取LeanCloud的Id.Key 2. 安装Flask框架和Requests库 pip install flask pip install re ...

  2. HTML5 <a>标签的ping属性用法

    随着移动互联网用户井喷式的增长,web前端开发中的HTML5在近几年备受瞩目,越来越多的人从事html5开发相关工作.今天小编也来凑个热闹,和大家一起来谈谈HTML5中<a>标签的ping ...

  3. RFID Exploration and Spoofer a bipolar transistor, a pair of FETs, and a rectifying full-bridge followed by a loading FET

    RFID Exploration Louis Yi, Mary Ruthven, Kevin O'Toole, & Jay Patterson What did you do? We made ...

  4. SQL Server查看所有表大小、表行数和占用空间信息

    一.查看表名和对应的数据行数select  a.name as '表名',b.rows as '表数据行数'from sysobjects a inner join sysindexes bon a. ...

  5. WindowsPhone-GameBoy模拟器开发五--使用XNA初略实现Gameboy显示系统

    开篇前,最近弄了个空间,大家不嫌弃的话可以上去讨论讨论J http://www.lihengzhe.cn 这一次,就来简单地实现gameboy的实现机制.先说一下本次内容涉及到的技术,其实也就一项—X ...

  6. Scala 深入浅出实战经典 第51讲:Scala中链式调用风格的实现代码实战及其在Spark中应用

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  7. HTML:模拟链接被按下,在新标签页打开页面,不使用window.open(可能被拦截)

    当按下一个按钮时,想打开一个新的标签页,可以使用window.open去实现但是因为使用window.open在新窗口或者新标签页中打开页面,有可能被浏览器给拦截.为了解决这个问题,可以模拟链接被按下 ...

  8. ATA/SATA/SCSI/SAS/FC总线简介

    ATA/SATA/SCSI/SAS/FC 都是应用于存储领域的总线,在当今的存储系统中,普遍应用的硬盘接口主要有 SATA . SCSI . SAS 和FC , ATA 比较古老,在一些老的低端存储系 ...

  9. EF 5.0 帮助类

    EF 5.0 帮助类 加入命名空间: using System; using System.Data; using System.Data.Entity; using System.Data.Enti ...

  10. R语言之中文分词:实例

    一.说明 网上提供的一个例子,做了修改与订正. 二.程序 #调入分词的库 library("rJava") library("Rwordseg") #调入绘制词 ...