我使用cache_sweeper,caches_action。更新后,我需要重置对象的缓存。
class ProductSweeper < ActionController::Caching::Sweeper
observe Product
def after_update(product)
expire_action(:controller => "/product", :action => "show", :url => product.url_was, :category => product.cats.first.url)
expire_action(:controller => '/catalog', :action => 'show', :url => product.cats.first.url)
end
end
在控制台中更新后,我可以看到日志:
Expire fragment views/localhost:3000/catalog/cat1/prod123456 0.1ms
Expire fragment views/localhost:3000/catalog/cat1 0.0ms
,但文件没有被删除,并且点击这些网址会返回旧的缓存页面。这到底是什么?(
缓存文件保存在%rails_root%/ tmp / cache中; Rails 3.2.19和ruby 1.9.3
答案 0 :(得分:0)
刚刚解决了这个问题,product.cats.first.url
中出现了一个愚蠢的错误;缓存仅针对一个类别进行了清除。如果您有类似的问题 - 请仔细检查请求网址和已清除的网址是否相同。