動作快取

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