Rails的页面缓存不工作,动作缓存扔“过滤器链已暂停”(Rails Page Caching no

2019-11-02 13:30发布

设定

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缓存此页:指标到我的控制器。 当我浏览这个页面它创建模板(而不是局部)的成功缓存。 但是它仍然使所有的SQL来电它不应该。

通过改变它caches_action:指数无SQL调用制造,但我收到两个“过滤器链停止”错误。

页面呈现正确,所以我不知道这是不是我应该过目与否。

如果有人能够解释为什么caches_page不工作,或者我应该何去何从上停止过滤器链,我将不胜感激。

谢谢!

Answer 1:

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

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

其次,页面缓存的工作原理是写一个静态的HTML文件到/ public目录具有相同的URL,你的缓存作用。 当一个请求时,Web服务器看到静态文件,并提供它,完全避免导轨。 这是同样的方式图像服务。 如果你改变config.action_controller.page_cache_directory您的静态文件将被写入到错误的目录/ URL,而不是由Web服务器发现。

最后,确保你更改生产它们的缓存行为,否则修改的行动将不会运行删除生成的静态文件。 这是真实的,即使你关闭缓存! 你仍然需要删除的文件。



文章来源: Rails Page Caching not working and Action Caching throwing 'Filter Chain Halted'