Dato che Heroku Cedar non ha cache HTTP fornita da Varnish, desidero utilizzare Rack::Cache
. Mi è stato detto che Rails 3.1.1 hanno Rack::Cache
attiva di default, ho solo bisogno di assicurarsi di avere nella configurazione:Rails 3.1 e caching pagina http
config.action_controller.perform_caching = true
e ho bisogno di scegliere un archivio di cache, per questo esperimento sono utilizzando:
config.cache_store = :memory_store
Nell'azione della pagina voglio mettere in cache ho aggiunto le seguenti righe:
response.header['Cache-Control'] = 'public, max-age=300'
response.header['Expires'] = CGI.rfc1123_date(Time.now + 300)
Questo codice utilizzato per funzionare bene con Varni sh, la prima richiesta restituirebbe un 200 e il successivo (per 5 minuti) restituirebbe un 304
.
Questo non accade con Rails 3.1 e Heroku Cedar Stack. Ricevo quelle intestazioni nella risposta, ma le richieste successive restituiscono 200 anziché 304.
Cosa sto facendo male? Grazie.
Hai ragione !!!! C'è un modo per memorizzare nella cache a un livello leggermente più alto? Ne vale la pena? (ad esempio, cosa succede se installo un rack :: cache in config.ru prima dell'applicazione rails?) – soulnafein
non proprio ... Rack :: Cache è la soluzione migliore. Basta mettere è il più alto possibile nel vostro ambiente e dovrebbe darvi le prestazioni necessarie dato evita l'intero stack http Rails. – leonardoborges
Oh e sarei grato se potessi votare la risposta originale se ti ha aiutato :) – leonardoborges