缓存:错误的路径和页面没有过期用简单的缓存
问题描述:
我有问题(红宝石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
答
expire_page预计该路线的路径,例如在高速缓存页面的根URL,你可以做
expire_page "/"
此外,为了让您的Web服务器寻找到合适的您需要在apache或nginx中配置重写规则以查找缓存目录。
+0
仍然一样。我使用webrick并在本地主机上工作。当我获得缓存的定义路径时(就像我的问题一样),服务器找不到它。当我使用默认的 - 找到缓存页面的作品。在两种情况下,到期仍然失败。 – zachar 2012-03-01 09:37:04
我找到了使用斜杠的建议,所以我添加了它。感谢您的帮助,但是当我使用'home'作为控制器名称时,问题仍然存在...... – zachar 2012-03-01 09:39:12