0

単純なキャッシング(ruby 1.9.2、rails 3.1.3、開発環境)に問題があります:

development.rb:

    config.action_controller.perform_caching = true
    config.action_controller.cache_store = :file_store, 'tmp/cache'
    config.action_controller.page_cache_directory = 'public/cache'

スイーパー:

class CacheSweeper < ActionController::Caching::Sweeper
  observe Article, Photo, Advertisement
  def after_save(record)
    expire_home
  end

...

  private

...

  def expire_home
    expire_page(:controller => '/homes', :action => 'index')
  end

end

コントローラー:

class HomeController < ApplicationController

  caches_page :index
  cache_sweeper :cache_sweeper

  def index
....

ページは正しいディレクトリにキャッシュされ、アクションは必要に応じてスイーパーアクションをトリガーしますが、ページの有効期限は切れておらず、サーバーはキャッシュされたページをデフォルトの場所から取得しようとしています。

cache: [GET /] miss

なぜ何かアイデアはありますか?構成に問題がありますか?

4

2 に答える 2

0

コントローラ名とスラッシュが間違っています。次のことを試してください。

def expire_home
  expire_page(:controller => 'home', :action => 'index')
end
于 2012-02-29T18:03:25.543 に答える
0

expire_page はルートのパスを想定しているため、たとえば、キャッシュページのルート URL を実行できます

expire_page "/"

また、Web サーバーが適切な場所を調べるようにするには、apache または nginx でキャッシュ ディレクトリを調べるように書き換えルールを構成する必要があります。

于 2012-02-29T19:02:40.603 に答える