Come si fa scadere la cache della pagina delle guide su più server delle app in esecuzione dietro un servizio di bilanciamento del carico? Ho tentato di implementare uno sweeper della cache, ma il suo unico spazza la cache sul server dell'app che riceve la richiesta. Le pagine memorizzate nella cache sono memorizzate nella directory pubblica.Scadenza della cache della pagina delle rotaie su più server delle app
risposta
Si potrebbe notificare a tutti i server di spazzare la cache (ad esempio tramite un URL speciale o il database, nel qual caso è necessario un lavoro che verifica il db su base regolare e invalidare la cache) o si invalida la cache su base regolare tramite un cronjob (suggerire di utilizzare whenever).
Modifica: un'altra soluzione sarebbe quella di condividere la directory pubblica su tutte le macchine tramite NFS o qualcosa del genere. In questo modo, ogni server può invalidare la cache per tutte le macchine.
Partendo dal presupposto che i server delle app possano accedere a un archivio file comune, è possibile modificare la posizione in cui i binari memorizzano la cache. In questo modo, quando si esaurisce la cache si rifletterà su tutti i server di app. Nella vostra configurazione è sufficiente aggiungere:
config.cache_store = :file_store, "/path/to/cache/directory"
Questo è probabilmente il modo più semplice. Esistono anche altri metodi come un server memcached.
Maggiori informazioni qui: http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-filestore