缓存:错误的路径和页面没有过期用简单的缓存

问题描述:

我有问题(红宝石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 

任何想法为什么?我的配置有问题吗?

您的控制器名称和引导斜杠错误。请尝试以下操作:

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

我找到了使用斜杠的建议,所以我添加了它。感谢您的帮助,但是当我使用'home'作为控制器名称时,问题仍然存在...... – zachar 2012-03-01 09:39:12

expire_page预计该路线的路径,例如在高速缓存页面的根URL,你可以做

expire_page "/" 

此外,为了让您的Web服务器寻找到合适的您需要在apache或nginx中配置重写规则以查找缓存目录。

+0

仍然一样。我使用webrick并在本地主机上工作。当我获得缓存的定义路径时(就像我的问题一样),服务器找不到它。当我使用默认的 - 找到缓存页面的作品。在两种情况下,到期仍然失败。 – zachar 2012-03-01 09:37:04