动作缓存

与页面缓存一样,动作缓存会缓存整个页面。不同之处在于,在提供缓存之前,请求会访问 Rails 堆栈,因此在运行缓存之前。它从 Rails 提取到 actionpack-action_caching gem

一个常见的例子是缓存需要身份验证的操作:

class SecretIngredientsController < ApplicationController
  before_action :authenticate_user!, only: :index, :show
  caches_action :index
  
  def index
    @secret_ingredients = Recipe.find(params[:recipe_id]).secret_ingredients
  end
end

选项包括:expires_in,自定义:cache_path(用于具有多个应该以不同方式缓存的路由的操作)和 t​​ihuan3 / :unless 以控制何时应缓存操作。

class RecipesController < ApplicationController
  before_action :authenticate_user!, except: :show
  caches_page :show
  caches_action :archive, expires_in: 1.day
  caches_action :index, unless: { request.format.json? }
end

当布局具有动态内容时,通过传递 layout: false 仅缓存操作内容。