新手问题 如何清除片段缓存呢?

msl12 · 2016年06月02日 · 最后由 msl12 回复于 2016年06月03日 · 3446 次阅读

有个需求需要定时清理某个页面上的片段缓存,但是不知道怎么清除..

BTW: 我用的 dalli

cache key 里面带上数据的更新时间,数据变化的时候就自然更新了。

基本上不需要删 cache

#1 楼 @huacnlee 那如果要删除的话,该怎么办呢?

比如说我的片段缓存地址是 views/LOL/layout/right/22e88d0ae992a3655ac6bd7ca224fc78

有什么方法,在我知道缓存是在 views/LOL/layout/right/ 下面的情况下,清理这一缓存?

等等等---

求教。

之所以要清除片段缓存,是因为我有个右边栏的‘热门文章’、‘最新评论’的设计

一有文章发布或有评论则删除右边栏 _right.html 里的片段缓存,然后重新建立新的缓存

我的 cache 语句是这样的,写在开头: <% cache("#{CACHE_PREFIX}/layout/right", :expires_in => 1.day) do %>

过期时间到了就清了

#6 楼 @hw676018683 但是不能等到过期时间才清呀

  1. 直接 rm ?
  2. Rails.cache.delete_if {|k, v| k.include? 'views/LOL/layout/right' }

乱猜的

不过好奇,缓存如果内容没有更新,为啥需要手动删除?

#8 楼 @small_fish__

因为这个缓存我是这样写的: <% cache("#{CACHE_PREFIX}/layout/right", :expires_in => 1.day) do %> 它检测不到是否有内容更新

#10 楼 @xiaoronglv

看了,知道了缓存会过期清除,但是还是不懂怎么在没过期前清除它..

Rails.cache.clear

可以在 controller 里直接执行这个 清除所以的 cache

#12 楼 @hging

直接清除所有的 cache 不太好吧..

你的 cache key 要基于 objects, 这样就是全自动。http://api.rubyonrails.org/classes/ActionView/Helpers/CacheHelper.html

#14 楼 @billy

哦?我看看。十分感谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号