2013-07-24 13 views
6

Sto utilizzando il seguente caching di basso livello per le cinque più recenti articoli di notizie a mia applicazione Rails:scadere manualmente cache di basso livello

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

C'è un modo per mantenere questa query nella cache fino a quando una nuova notizia l'articolo è stato creato? Stavo pensando di scadenza manualmente la cache utilizzando un osservatore, ma non ero sicuro se ci fosse un modo per fare questo in realtà, ad esempio:

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

risposta

10

È possibile scadere manualmente la cache utilizzando il metodo .delete:

Rails.cache.delete("recent_news") 
+0

Vorrei anche espandere il comando di recupero per includere: '(race_condition_ttl: 10)' Questo recupererà un nuovo set per le notizie @recent eseguendo una query quando scade il tempo di scadenza. Invece di eseguire molte query quando scade prima che la cache sia impostata. – Shadoath

Problemi correlati