我目前正在缓存我的网络应用程序。
所以我开车使用memcache,我正在寻找一种简单的方法来处理所有这些。
例如,我想缓存我的所有内容,直到它们没有被修改。
我无法缓存所有页面,因为某些部分需要缓存。
所以我可以将一个fragment_cache用于控制器,然后另一个用于视图,然后在更新后的模型中删除该片段。
但感觉很重,我不喜欢这样。
如果您有任何想法,我会很高兴听到它们。
谢谢;)
答案 0 :(得分:4)
class WidgetSweeper < ActionController::Caching::Sweeper
observe Widget
def after_update(widget)
expire_cache_for(widget)
end
def after_destroy(widget)
expire_cache_for(widget)
end
def after_create(widget)
expire_cache_for(widget)
end
private
def expire_cache_for(widget)
expire_action(:controller=>"widgets",:action=>"show",:id=>widget.id)
expire_action(:controller=>"widgets",:action=>"index")
end
end
我在这里做了关于动作和片段缓存的写作,其中包含了更多细节,包括如何根据条件进行缓存:
http://www.cowboycoded.com/2010/07/14/performance-exercise-1-rails-cache-cash/
答案 1 :(得分:0)
您还可以使用缓存名称来扫描数据。
例如,如果你这样做:
<% cache "my_model_#{@model.updated_at}" do %>
stuff I render with my model
<% end %>
当模型更新时,您会自动清除缓存,并且不再使用清扫器。