0

アクションキャッシングを実行するjson APIがあります:

class Api::V2::TagsController < Api::V2::BaseController

  before_filter :set_cache_headers, :only => [:categories, :tribes]
  caches_action :categories, :tribes, :expires_in => 1.hour

このキャッシュを期限切れにすることがわかった唯一の方法は、次を使用することです:

Rails.cache.delete api_v2_categories_url(:locale => nil)+'.json?'

これはひどく醜い

このひどいハックを改善するのを手伝ってくれる人はいますか?


詳細情報:

キャッシュはうまく機能し、ログにキャッシュ書き込みが表示されます:

Cache write: http://localhost:3000/api/v2/categories.json?

管理名前空間では、キャッシュを期限切れにする必要があります。試してみました:

expire_action(:controller => '/api/v2/tags', :action => 'categories', :format => :json)

失敗して出力するもの:

フラグメント ビューを期限切れにする/localhost:3000/mu-8c54ade2-cbb77ba0-4f0c28d3-607169d0.json?action=categories&controller=api/v2/tags&locale=fr

PS:私は成功せずにこの答えを試しました: rails caching: expire_action in another namespace

4

2 に答える 2

0

同様の問題があり、以下のようなものを使用して修正しました。

expire_fragment(ActionCachePath.new(self, {
    :controller => '/api/v2/tags',
    :action => 'categories'
}, true).path)
于 2013-11-28T19:35:20.513 に答える