Я только что начал кэшировать свое приложение и немного застрял. У меня есть запрос, который зависит от области. Область действия собирает последние (x) сообщения, созданные на странице.
Rails.cache.fetch('homepage/posts') do
posts = Post.by_latest
render json: posts
end
Вот что мне трудно понять. Поскольку я хочу убедиться, что на сайте отображаются последние сообщения, я не хочу вручную устанавливать срок действия или дату. Вместо этого я хотел бы закончить кеш при создании или уничтожении нового поста. Вот другая дилемма. Я думал о том, чтобы сделать обратный вызов в моей модели Post, но все немного перемешивается, когда я хочу закончить кеш других ключей, но все хотят выполнить то же самое.
def flush_cache
Rails.cache.delete('homepage/posts')
Rails.cache.delete('posts')
...
end
Я хотел очистить кэш более динамично, как если бы вы использовали один объект ... где ключ кэша состоит из атрибута updated_at
объекта и истекает всякий раз, когда изменяется. Я нахожу трудным делать с коллекцией все же. Генерирование ключа кеша из запроса приведет к самому запросу, что пойдет на убыль общей цели кеширования:
Rails.cache.fetch(Post.by_latest.cache_key) do
posts = Post.by_latest
render json: posts
end
Любая помощь будет оценена.