缓存:错误的路径和页面未过期



我遇到了简单缓存的问题(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中配置一个重写规则来查找缓存目录。

相关内容

  • 没有找到相关文章

最新更新