2

我正在尝试在发布新文章时使用清扫器清除主页索引操作。

主页缓存在开发环境中运行良好,并在 1 分钟后过期。但是,当保存文章时,不会触发清扫器操作。

class HomeController < ApplicationController
  caches_action :index, :expires_in => 1.minute
  cache_sweeper :article_sweeper
  def index
    @articles = Article.published.limit(5)
  end
end

class ArticleSweeper < ActionController::Caching::Sweeper
  observe Article
  def after_update(article)
    expire_action(:controller => 'home', :action => 'index')
  end
end

要么我在某个地方出错,要么需要一种不同的方法来使主页缓存过期。

我的应用程序使用 ActiveAdmin 来更新文章,并使用 Dalli 来更新 Memcache(因为我将使用 Heroku)。

4

1 回答 1

4

解决方案的两个步骤:

对模型执行更改的控制器需要具有清扫器参考,而不是如上所示的目标控制器。在这种情况下,它是 active_admin,所以我将它添加到我的 admin/articles.rb 文件(source)而不是主控制器。

controller do
  cache_sweeper :article_sweeper
end

并且控制器名称需要一个斜杠

expire_action(:controller => '/home', :action => 'index')
于 2012-07-24T23:37:55.917 回答