动作缓存
与页面缓存一样,动作缓存会缓存整个页面。不同之处在于,在提供缓存之前,请求会访问 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
(用于具有多个应该以不同方式缓存的路由的操作)和 tihuan3 / :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
仅缓存操作内容。