2012-01-03 12 views
6

Quando gli utenti accedono al nostro sito, recuperiamo un oggetto dal nostro database che contiene varie impostazioni utilizzate in tutto il sito. Per ridurre il carico del server dal tornare al nostro database ogni volta che l'utente interagisce con il nostro sito, stiamo cercando di pensare a modi alternativi. (Serializziamo e de-serializziamo l'oggetto, quando necessario). È probabile che l'oggetto sia < 1 MB ma potrebbe variare.Quanto è grande/può creare un cookie?

  1. Quanto può essere grande un oggetto in una sessione senza influire in modo significativo sulle prestazioni?
  2. Quanto grande può essere conservato un oggetto in un cookie?
  3. Esistono altre alternative (altro che il recupero dei dati dal nostro DB)?
+0

Il tuo database è davvero così lento che il recupero dei valori da esso è così problematico? Questo dovrebbe probabilmente essere realmente gestito sul lato server –

+1

possibile duplicato di [Qual è la dimensione massima di un file cookie?] (Http://stackoverflow.com/questions/3107140/quello-è-il-massimo-dimensioni- of-a-cookie-file) –

+0

e se proprio devi fare questo, vedi [Local Storage vs Cookies] (http://stackoverflow.com/q/3220660) –

risposta

4

La dimensione massima consentita del cookie dipende dal client. Ad esempio, un documento MSDN article del 2005 afferma che il cookie intero può contenere almeno 4096 byte (compresa la data di scadenza, ecc.). Il RFC menzionata nello stesso articolo sono contenute alcune ulteriori informazioni riguardanti limitazioni:

6.3 Limiti di implementazione

pratici implementazioni user agent hanno limiti sul numero e la dimensione dei cookie che possono memorizzare. In generale, il supporto dei cookie degli user agent non deve avere limiti fissi. Dovrebbero cercare di memorizzare come molti cookie utilizzati di frequente il più possibile. Inoltre, uso generale agenti utente dovrebbe fornire ciascuno dei seguenti capacità minime singolarmente, anche se non necessariamente simultaneamente:

  • almeno 300 cookie

  • almeno 4096 byte per cookie (come misurato dal la dimensione dei caratteri che compongono il cookie non terminale nella descrizione sintassi dell'intestazione Set-cookie)

  • almeno 20 cookie per host unico o nome di dominio

Se i dati della sessione non è valido (come in "non deve essere perso in caso di esempio riavvio "), considera la possibilità di archiviarlo in memcached.Questo è abbastanza veloce ed evita di accedere al DB solo per ottenere dati di sessione.Potresti davvero considerare l'utilizzo di un mix di entrambi: potresti creare un piccolo cookie contenente l'id di sessione e il login Quindi una perdita delle sessioni sul lato server non comporterebbe la disconnessione degli utenti, quindi l'impatto sarebbe piuttosto basso

3

Un'alternativa ai cookie è la memoria locale html5. Non è supportata dai vecchi browser, ma se non importa a voi la sua una buona opzione per le preferenze dell'utente Tenete a mente quanto segue:.

1) il limite predefinito è di 5 MB per ogni dominio (credo)
2) Se si memorizzano i dati delle impostazioni di tipo di locale archiviazione, è ancora necessario sincronizzare con un se rver, altrimenti la modifica dei browser determinerà la mancata presenza delle impostazioni dell'utente nel nuovo browser.

2

i dati dei cookie sono limitati a 4kb.

4 KB per cookie massima 300 cookie totali, per un totale di 1,2 Mbyte al massimo 20 cookie accettati da un determinato server o un dominio

Ogni cookie inizia con una coppia nome-valore. Questa coppia è seguita da zero o da più coppie attributo-valore separate da punto e virgola. Per un nome di dominio, ogni cookie è limitato a 4.096 byte. Questo totale può esistere come una coppia nome-valore di 4 kilobyte (KB) o fino a 20 coppie nome-valore per un totale di 4 KB. Se il computer non ha spazio sufficiente per archiviare il cookie, il cookie viene scartato. Non è troncato. Le applicazioni dovrebbero utilizzare il minor numero possibile di cookie e un cookie il più piccolo possibile. Inoltre, le applicazioni dovrebbero essere in grado di gestire la perdita di un cookie.

Se un'applicazione Web utilizza più di 19 cookie personalizzati, lo stato della sessione ASP potrebbe andare perso. Internet Explorer 4.0 e versioni successive consentono un totale di 20 cookie per ogni dominio. Poiché ASPSessionID è un cookie, se si utilizzano 20 o più cookie personalizzati, il browser è costretto a scartare il cookie ASPSessionID e perdere la sessione.