動作快取
與頁面快取一樣,動作快取會快取整個頁面。不同之處在於,在提供快取之前,請求會訪問 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
僅快取操作內容。