15 Stimmen

Manuell den Cache auf niedriger Ebene ablaufen lassen

Ich verwende das folgende Low-Level-Caching für die fünf neuesten Nachrichtenartikel in meiner Rails-Anwendung:

@recent_news = Rails.cache.fetch("recent_news", :expires_in => 1.hour) do
  News.order("created_at desc").limit(5)
end

Gibt es eine Möglichkeit, diese Abfrage im Cache zu behalten, bis ein neuer Nachrichtenartikel erstellt wird? Ich habe daran gedacht, den Cache manuell mithilfe eines Beobachters zu invalidieren, war mir aber nicht sicher, ob es eine Möglichkeit gibt, dies tatsächlich zu tun, z.B:

class NewsObserver < ActiveRecord::Observer
  def after_create
    #expire recent_news cache
  end
end

25voto

MrTheWalrus Punkte 9563

Sie können den Cache manuell mit der Methode .delete ablaufen lassen:

Rails.cache.delete("recent_news")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X