Der Cache des Rails läuft ab

8

Ich habe eine Schienenanwendung, in der ich einfachen Schienencache verwende. Mein Test ist wie folgt:

%Vor%

Ich kann es durch Rails.cache.read('temp') und Rails.cache.fetch('temp') lesen.

Das Problem ist, dass es nicht abläuft. Es ist nach 60 Sekunden noch am Leben. Kann mir jemand sagen, was hier fehlt?

Zu Ihrer Information: Ich habe in meiner development.rb wie folgt erklärt:

%Vor%

Gibt es etwas, was ich verpasst habe? Ich möchte meinen Cache ablaufen lassen.

    
palani 13.01.2012, 05:35
quelle

2 Antworten

9

Nach einigem Suchen habe ich einen möglichen Grund gefunden, warum der Cache nach 60 Sekunden nicht bereinigt wird.

  1. Sie rufen Rails.cache.write auf, was hier dokumentiert ist.
  2. Es ruft write_entry(namespaced_key(name, options), entry, options) auf, wobei Ihre Option :expires_in ein Teil des Arguments options ist.
  3. Die Implementierung von write_entry hat die folgende Bedingung:

    %Vor%

Es werden also 5 Minuten zu Ihren 60 Sekunden hinzugefügt. 2 mögliche Lösungen:

  • Lebe einfach damit: -)
  • Versuchen Sie, die Option :raw => true einzuschließen, vielleicht wird dadurch die Bedingung übersprungen, so dass Ihr Ablauf als verdächtig funktioniert.
mliebelt 13.01.2012 06:58
quelle
5

Die Option :expires_in funktioniert nur mit kompatiblen Speichern (z. B. memcached) - nicht mit Speicher.

Von Ссылка :

  

Schließlich, wenn Sie Memcached oder Ehcache verwenden, können Sie auch bestehen   :Läuft ab in. In der Tat sind alle Parameter, die nicht von caches_action verwendet werden   an den zugrunde liegenden Cache-Speicher gesendet.

    
Zubin 11.02.2013 22:17
quelle

Tags und Links