基于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. springMVC乱码问题-转

    彻底解决Spring MVC 中文乱码 问题     1:表单提交controller获得中文参数后乱码解决方案 注意:  jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get ...

  2. Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

    课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str=& ...

  3. LDR 和 ADR 彻底详解

    0.什么是位指令? 答:伪指令(Pseudo instruction)是用于告诉汇编程序如何进行汇编的指令.它既不控制机器的操作也不被汇编成机器代码, 只能为汇编程序所识别并指导汇编如何进行. 1.L ...

  4. http 请求类

    1.httpclient请求类 代理demo:http://hc.apache.org/httpcomponents-client-4.3.x/httpclient/examples/org/apac ...

  5. jquery easyui 插件开发

    (function($) { /** * 插件定义 */ $.fn.resquery = function(options, param) { if (typeof options == " ...

  6. RDD分区2GB限制

    本文目的   最近使用spark处理较大的数据时,遇到了分区2G限制的问题(ken).找到了解决方法,并且在网上收集了一些资料,记录在这里,作为备忘.   问题现象   遇到这个问题时,spark日志 ...

  7. iOS中的webView加载HTML

    在日常开发中,我们为了效率会用到很多很多的WebView,比如在做某个明细页面的时候我们返回给你的可能是一个html字符串,我们就需要将当前字符串展示到webView上面,所以我们对HTML标签需要有 ...

  8. Nagios 安装配置

    ##Debian 6 安装server # apt-get install nagios* 一路设置好各种密码,成功后访问 http://ip/nagios3 既可,默认用户*nagiosadmin* ...

  9. wordpress图片水印插件DX-Watermark

    DX-Watermark是一款功能齐全的wordpress图片水印插件,可以自动给上传的图片添加文本或者图片水印. 后台截图: 文本水印: 图片水印: 选项说明: 类型:可选择文本或图片水印两种类型, ...

  10. wwdc2016-session707 Notifications(draft)

    Introduction to Notificationshttps://developer.apple.com/wwdc2016/707 通知这哥们说话有点不清晰啊. 远程通知本地通知 可以被操作的 ...