Rails Caching von DB-Abfragen und Best Practices

Die Datenbanklast auf meiner Website wird sehr hoch. Daher ist es an der Zeit, häufige Abfragen, die 1000-mal pro Stunde aufgerufen werden und deren Ergebnisse sich nicht ändern, zwischenzuspeichern. So mache ich zum Beispiel auf meinem Stadtmodell folgendes:

def self.fetch(id)   
  Rails.cache.fetch("city_#{id}") { City.find(id) }   
end 

def after_save
  Rails.cache.delete("city_#{self.id}")
end

def after_destroy
  Rails.cache.delete("city_#{self.id}")
end

So jetzt, wenn ich City.find (1) das erste Mal kann, wenn ich die DB drücke, aber die nächsten 1000 Male bekomme ich das Ergebnis aus dem Speicher. Groß. Die meisten Aufrufe von city sind jedoch nicht City.find (1), sondern @ user.city.name, wobei Rails den Abruf nicht verwendet, sondern die DB erneut abfragt.

Ich kann City.find (@ user.city_id), aber das ist hässlich.

So meine Frage an euch. Was machen die Schlauen? Was ist der richtige Weg, um dies zu tun?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage