设置
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不起作用,或者我应该从这里停止过滤器链,我会非常感激。
谢谢!
答案 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服务器不会注意到。
最后,如果对生成静态文件的高速缓存操作进行更改,请确保删除生成的静态文件,否则将不会运行已修改的操作。即使禁用缓存也是如此!您仍然需要删除文件。