2012-02-29 64 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

我找到了使用斜槓的建議,所以我添加了它。感謝您的幫助,但是當我使用'home'作爲控制器名稱時,問題仍然存在...... – zachar 2012-03-01 09:39:12

0

expire_page預計該路線的路徑,例如在高速緩存頁面的根URL,你可以做

expire_page "/" 

此外,爲了讓您的Web服務器尋找到合適的您需要在apache或nginx中配置重寫規則以查找緩存目錄。

+0

仍然一樣。我使用webrick並在本地主機上工作。當我獲得緩存的定義路徑時(就像我的問題一樣),服務器找不到它。當我使用默認的 - 找到緩存頁面的作品。在兩種情況下,到期仍然失敗。 – zachar 2012-03-01 09:37:04