zoukankan      html  css  js  c++  java
  • ruby -- 进阶学习(十二)fragment cache

    基于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/

  • 相关阅读:
    rails中输出excel
    Rails IDE 有很多选择,但是具体到ubuntu 64bit 选择的余地就不多了,这里选择Aptana Studio 3 Beta
    linux中查看系统资源占用情况的命令
    GIT GUI使用
    linux下的c 环境配置vim
    oracle11 忘记密码
    Aptana_Studio 介绍和应用
    linux root命令忘记以及挂载U盘
    程序员创业生死一线 最后归宿在哪里?
    如何使用Log4j? .
  • 原文地址:https://www.cnblogs.com/lmei/p/3304361.html
Copyright © 2011-2022 走看看