在 Rails 4 中缓存静态页面的最佳方法是什么?

Tin*_*n81 2 caching ruby-on-rails ruby-on-rails-4

为了提高 Rails 4.0.2 应用程序的性能,我想缓存一些静态页面的输出:

class PagesController < ApplicationController

  def home
  end

  def about_us
  end

  def contact
  end

end
Run Code Online (Sandbox Code Playgroud)

Rails Guide on Caching中,它说“页面缓存已从 Rails 4 中删除”并移至 gem 中。然而,在gem 描述中,它表示它只会维护到 Rails 4.1。其他一些观察家也建议不要使用页面缓存并支持俄罗斯娃娃缓存

那么,缓存一堆静态页面的最佳方法是什么?这些静态页面永远不会真正访问数据库,并且仅在用户登录时才会(轻微)更改?

感谢您的任何建议。

tir*_*adc 5

您仍然可以对静态页面使用片段缓存,尽管动态/数据库驱动页面的好处显然更加明显。如果您有很多正在渲染的部分或昂贵的视图逻辑,那么值得考虑这样做。只需使用以下内容包装页面的模板:

# about_us.html.erb
<% cache 'about_us' do %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

当您第一次在环境中访问该页面时config.action_controller.perform_caching = true,它将生成片段(在本例中是您的整个页面),并且它将在您下次重新加载时提供该片段。当模板改变时,缓存摘要将会失效:

添加到缓存键的模板摘要是通过获取整个模板文件内容的 md5 来计算的。这可确保您的缓存在您更改模板文件时自动过期。

http://api.rubyonrails.org/classes/ActionView/Helpers/CacheHelper.html