La mia comprensione del ciclo di vita della sessione in Ruby on Rails (in particolare v3 e versioni successive) è che una sessione viene creata all'inizio di una richiesta, per ogni richiesta e se tale richiesta non contiene un cookie di sessione esistente ne verrà creato uno nuovo, altrimenti il cookie di sessione verrà deserializzato e memorizzato nell'hash della sessione.E 'possibile che le sessioni di Rails vengano create "just in time"?
Lo scopo di questo, ovviamente, supporta una serie di funzioni di sicurezza come CSRF ecc
Tuttavia, questo pone un po 'un problema quando si tratta di caching delle pagine in un sito con servizi di cache HTTP e proxy come Varnish, poiché la maggior parte delle configurazioni tende a escludere questi (in genere tutti) i cookie sia sulla richiesta che sulla risposta (dato che la cache di solito è destinata a un pubblico generalizzato).
So che è possibile impostare Varnish ecc. Per creare l'hash dell'oggetto con i dettagli dei cookie inclusi, e questo porterebbe i dati memorizzati nella cache a quella sessione (e quindi a quell'utente), tuttavia mi chiedo se questo sia completamente necessario.
Ho un'applicazione che è abbastanza 'statica' in natura - il contenuto è tirato da un database, reso in una pagina che possono poi essere memorizzate nella cache - ci sono alcuni elementi (come il numero di commenti, 'recenti' articoli ecc) che può essere aggiunto con un ESI, ma per ogni richiesta Rails tende ancora a voler impostare una nuova sessione, e quando un utente ha già una sessione questa roba viene eliminata dal server cache.
Mi chiedo se potrebbe essere possibile (tramite funzionalità preesistente, o costruire la funzionalità da solo) per consentire allo sviluppatore di controllare quando è richiesta una sessione, e solo quando viene specificato è il back-and-forward con i cookie, l'inizializzazione/deserializzazione della sessione, ecc.
Che, o sto pensando a questo problema nel modo sbagliato e la necessità di affrontare la questione da un altro angolo ...
Se lo lasci com'è ora e fai una chiamata ajax per caricare i pezzi "specifici dell'utente" della pagina, funziona? –