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.
Nach einigem Suchen habe ich einen möglichen Grund gefunden, warum der Cache nach 60 Sekunden nicht bereinigt wird.
Rails.cache.write
auf, was hier dokumentiert ist. write_entry(namespaced_key(name, options), entry, options)
auf, wobei Ihre Option :expires_in
ein Teil des Arguments options
ist. Die Implementierung von write_entry
hat die folgende Bedingung:
Es werden also 5 Minuten zu Ihren 60 Sekunden hinzugefügt. 2 mögliche Lösungen:
:raw => true
einzuschließen, vielleicht wird dadurch die Bedingung übersprungen, so dass Ihr Ablauf als verdächtig funktioniert. 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.
Tags und Links ruby-on-rails