Как истечь срок действия кэша действий при обновлении базовой модели в Rails 6?

Я использую кэширование действий, которое работает нормально с Rails 6.

Проблема в том, как истечь срок действия кеша при обновлении базовой модели?

Согласно руководствам Rails

См. гем actionpack-action_caching. См. обзор срока действия кэша на основе ключей DHH для нового предпочтительного метода.

Согласно проблеме с драгоценным камнем Action Caching , использование Rails Observer для очистки кеша будет работать.

https://github.com/rails/rails-observers#action-controller-sweeper

Но Rails Observer , похоже, не работает с Rails 6.

Итак, как истечь кеш с помощью after_saveперезвонить?

1 ответ

Вы можете передать свой собственный cache_path, чтобы истечь срок действия ключа. Однако вам все равно нужно получить какую-то запись, чтобы вычислить ее.

      class MyController < ApplicationController
  before_action :set_record

  caches_action :show, expires_in: 1.hour, cache_path: ->(_) { show_cache_key }

  def show; end

  private

  def set_record
    @record = Record.find(params[:id])
  end

  def show_cache_key
    @record.cache_key
  end
end

Выполнение аннулирования кеша вручную — невероятно утомительный и подверженный ошибкам процесс, поэтому я бы не стал аннулировать ключи в after_stepи вместо этого используйте истечение срока действия на основе ключа.

Другие вопросы по тегам