2013-03-20 3 views
6

Ho avuto difficoltà per un po 'di tempo a scoprire se c'è qualche tempo di scadenza predefinito impostato da Rails, nel caso in cui non ne forniamo alcuna mentre memorizzi una coppia chiave-valore in memcache? ad es. Rails.cache.write ('some-key', 'some-value')Rails memcache store tempo di scadenza automatico predefinito

Le rotaie avrebbero impostato un po 'di scadenza per impostazione predefinita se non abbiamo specificato?

risposta

5

Se si utilizza la classe integrata predefinita MemCacheStore fornita da Rails, quindi no. Non assumerà un tempo di scadenza quando crei nuove voci della cache. Puoi read the applicable code per verificarlo. Esso controlla per vedere se hai superato un'opzione expires_in al metodo #write come

Rails.cache.write("key", "content", expires_in: 2.hours) 

e se non si dispone, semplicemente passa da 0 a Memcache che indica il tempo di scadenza. Spero che questo ti aiuti!

5

Se si utilizza il più recente (e credo che meglio) Dalli gemma memcached, è possibile configurarlo a livello di scheda utilizzando una linea come la seguente:

config.cache_store = :dalli_store, 'cache-1.example.com', 'cache-2.example.com', 
    { :namespace => NAME_OF_RAILS_APP, :expires_in => 1.day} 

Vedere la README per una spiegazione dettagliata dell'opzione :expires_in. Nel complesso, ritengo che Dalli valga più di una semplice funzionalità, è anche più veloce e supporta alcune funzionalità di autenticazione più recenti, ecc.

+0

Buona chiamata. 'MemCacheStore' è solo un involucro sottile su Dalli, dopo tutto. – piersadrian