Rails页面缓存不起作用和动作缓存抛出“过滤链停止”

时间:2009-12-15 19:14:23

标签: ruby-on-rails caching

设置

Controller -> Action Index 
  results = Model.all (SQL Call)

View
  Loop through and render partial from results.  Call count for result row  (SQL Call)

Partial 
  Manage result data and add point on Google map  

我正在尝试缓存此页面,因此我将 caches_page:index 添加到我的控制器。当我查看此页面时,它会创建模板的成功缓存(但不是部分缓存)。但是它仍然会使所有的sql调用不应该。

通过更改它 caches_action:index 没有进行sql调用,但是我收到两个'Filter chain halted'错误。

页面呈现正确,所以我不知道这是否是我应该查看的内容。

如果有人能够解释为什么caches_page不起作用,或者我应该从这里停止过滤器链,我会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,如果要在开发环境中测试缓存,请确保设置:

# in config/environments/development.rb
config.action_controller.perform_caching = true

其次,页面缓存的工作原理是将静态HTML文件写入/ public目录,其URL与您正在缓存的操作相同。当请求进入时,您的Web服务器会看到静态文件并提供服务,完全避免使用Rails。这与图像的提供方式相同。如果更改config.action_controller.page_cache_directory,您的静态文件将被写入错误的目录/ URL,并且Web服务器不会注意到。

最后,如果对生成静态文件的高速缓存操作进行更改,请确保删除生成的静态文件,否​​则将不会运行已修改的操作。即使禁用缓存也是如此!您仍然需要删除文件。