expire_action不会删除缓存页面

时间:2014-10-06 09:39:11

标签: ruby-on-rails caching

我使用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

1 个答案:

答案 0 :(得分:0)

刚刚解决了这个问题,product.cats.first.url中出现了一个愚蠢的错误;缓存仅针对一个类别进行了清除。如果您有类似的问题 - 请仔细检查请求网址和已清除的网址是否相同。