我遇到了简单缓存的问题(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
有什么想法吗?我的配置有问题吗?
您有错误的控制器名称和前导斜杠。尝试以下操作:
def expire_home
expire_page(:controller => 'home', :action => 'index')
end
expire_page需要路由的路径,因此例如缓存页面中的根url,您可以执行
expire_page "/"
此外,为了让您的web服务器查找正确的位置,您需要在apache或nginx中配置一个重写规则来查找缓存目录。