在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
基于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) 这说明已经帮你把页面进行缓存,文件名是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/ |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论