私は以下の設定をしています:カテゴリと呼ばれるモデル。これらのカテゴリは、ActiveAdminを使用して管理されます。ページキャッシュを使用してカテゴリをキャッシュします。手動で呼び出されない限り、掃除機は動作しません。何が起こっていますか?
これは私がセットアップをしたか私のアプリ/管理/ categories.rbある
ActiveAdmin.register Category do
controller do
cache_sweeper :category_sweeper
end
end
これは私の掃除です:
class CategorySweeper < ActionController::Caching::Sweeper
observe Category
def after_save(category)
expire_cache(category)
end
def after_destroy(category)
expire_cache(category)
end
def expire_cache(category)
expire_page :controller => 'categories', :action => 'index', :format => 'json'
end
end
そして、ここでは私のコントローラです:
class CategoriesController < ApplicationController
caches_page :index
cache_sweeper :category_sweeper
respond_to :json
def index
@categories = Category.all
respond_with(@categories)
end
def show
CategorySweeper.instance.expire_cache(@category)
respond_with('manually sweeped!')
end
end
アクティブな管理者に変更があり、スイーパが呼び出されるはずです。私はdebug.logを設定し、動作していることが判明しました。しかし何らかの理由でキャッシュが期限切れにならない!
しかし、私がshowアクションを実行すると(つまり、/categories/1.jsonに行くと、私の手動スイーパが起動して正常に動作します)。だから、私はそれを呼び出すときにスイーパーはなぜ働いているのですが、管理者に変更があったときではないのですか?事前に
おかげで、異なる名前空間にあります -David
:
は、キャッシュの有効期限のURLコードにスラッシュを追加します。私は一つの質問を持っています:私のルートでは、URL /api/v1/categories.jsonを作るためにスコープを使います。その意味で、私は/ api/v1/categoriesを行うべきです。しかし、私はそれをしようとすると、キャッシュがクリアされていません。しかし、あなたのソリューションは、URLが/categories.jsonの場合にはうまくいきます。何か案は? – bobbypage
引数として 'path_prefix'を試してください。 –