2012-02-29 3 views
0

私が持っている問題で期限が切れていない(ルビー1.9.2は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 

なぜでしょうか?私の設定に何か問題がありますか?

答えて

0

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

def expire_home 
    expire_page(:controller => 'home', :action => 'index') 
end 
+0

スラッシュを使用するためのアドバイスがありますので、追加しました。助けてくれてありがとう、しかし、私はコントローラ名として "家"を使用しているとき、問題はまだ発生します... – zachar

0

expire_pageは、あなたのWebサーバが右に見てもらうために、また

expire_page "/" 

を行うことができ、キャッシュページでルートURL例えばので、ルートのパスを期待キャッシュディレクトリを見るために、apacheまたはnginxで書き換えルールを設定する必要があります。

+0

まだ同じです。私はwebrickを使い、localhostで作業しています。私は(私の質問のように)キャッシュに定義されたパスを取得すると、サーバーはそれを見つけることができません。私がデフォルトのものを使用しているとき - キャッシュされたページの検索期限切れはどちらの場合でも失敗します。 – zachar

関連する問題