30 Sep
duccio

duccio il 30 September 2008 parla di Rails Snippet

CGI::Session::CookieStore::CookieOverflow

Spesso per evitare accessi al database o per matenere le informazioni su tutte le pagine visitate facciamo uso delle sessioni, in generale dovremmo usarne poche, di piccole dimensioni e con informazioni non sensibili!!

Con il Rails 2.1 di default le sessioni sono memorizzate nei Cookies.

I vantaggi dei Cookies

Questa soluzione è ottima per molti motivi tra cui ad esempio la riduzione del numero di accessi al FileSystem del server, che in situazioni di scaling dell’applicazione può essere un grande vantaggio.

Il limite dei Cookies

Il limite nell’utilizzo delle sessioni memorizzate nei Cookies sono le dimensioni del cookie che al massimo è di 4K, per cui può verificarsi l’errore CGI::Session::CookieStore::CookieOverflow.

La soluzione al CookieOverflow

Per ovviare a questo problema possiamo diminuire le informazioni da mettere in sessione :-), oppure modificare il session_store impostandolo nell’environment.rb:

    1 config.action_controller.session_store = uno_dei_tipi_di_salvataggio delle_sessioni

Con uno di questi motori:

  • CookieStore (default) - Salva tutto sul client.
  • PStore - Salva i dati sul Fyle System
  • SQLSessionStore - Salva i dati sul db usando SQL.
  • DRBStore - Salva i dati un un client DRB.
  • MemCacheStore - Salva i dati nel MemCache.
  • ActiveRecordStore - Salva i dati nel db usando Active Record

Reimpostando il vecchio PStore evitate il problema in quanto non ci saranno più limiti di grandezza.

1 Commento a “CGI::Session::CookieStore::CookieOverflow”

  1. Alberto il 28 December 2008 alle 20:21 dice:

    Più db:sessions:create =)
    Bellissimo blog :)

    Saluti

    Alberto

Scrivi un commento