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

时间:2012-02-29 16:07:50

标签: ruby-on-rails ruby caching ruby-on-rails-3.1 sweeper

我遇到了简单缓存的问题(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

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

2 个答案:

答案 0 :(得分:0)

您有错误的控制器名称和前导斜杠。请尝试以下方法:

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

答案 1 :(得分:0)

expire_page需要路径的路径,例如你可以在缓存页面中的根URL

expire_page "/"

此外,要让您的Web服务器查找正确的位置,您需要在apache或nginx中配置重写规则以查看缓存目录。