2010-09-27 21 views
8

Ho bisogno di rendere il mio sito più veloce sul lato client. Mi chiedo se la mia eccessiva manipolazione dei cookie Javascript potrebbe rallentare il browser. Usa l'hard disk, che è il componente più lento di un computer. Su un hard disk fortemente frammentato, la manipolazione dei cookie potrebbe bloccare il browser?La scrittura di un cookie è molto lenta in JS?

JS sta facendo qualche ottimizzazione per la scrittura/lettura di cookie (memorizzazione nella cache, ecc.). Potrei sfruttare queste ottimizzazioni per migliorare il mio sito?

Sostituire i cookie lato client con un database lato server è fuori questione perché i miei server sono già sovraccaricati.

+2

ottimizzazioni premature? Mi fiderei che il cookie fosse veloce poiché la maggior parte dei cookie sono di default molto piccoli. Puoi spiegare perché pensi che i tuoi cookie abbiano un impatto negativo sulle prestazioni? – jcolebrand

risposta

0

i cookie fanno parte delle intestazioni di richiesta e risposta, quindi caricarli significa caricare ogni richiesta e risposta. In secondo luogo, sei limitato a un totale di 50 cookie per dominio e 4k per cookie.In terzo luogo, molti utenti sono assolutamente terrorizzati dai cookie e tendono a eliminarli anche se sono innocui.

A causa di questi 3 motivi, gli sviluppatori Web li utilizzano molto raramente a meno che non sia assolutamente necessario (ad esempio i token di sessione). Poiché gli sviluppatori web li usano molto raramente, ci sono poche "migliori pratiche" che li circondano e tendono a non attirare molta attenzione.

Mi piacerebbe assicurarmi che stia effettivamente interagendo con i cookie che è il problema prima di affrontarlo. L'implementazione è specifica per il browser, quindi probabilmente vedrai risultati molto diversi di questi test a seconda del browser in cui lo provi.

+0

Perché i cookie vengono inviati al server? Il mio codice server non utilizza mai i cookie. Accedo solo i cookie sul lato JS. Quindi se ogni utente ha 20 cookie, tutti i 20 verranno inviati su ogni richiesta del server PHP? Perché??? C'è un modo per disabilitare l'invio di cookie al server? – JoJo

11

Ci sono alcuni modi per velocizzare la pagina sul lato client, anche se suppongo che riducendo l'uso dei cookie si risparmierà al massimo qualche microsecondo. In generale, assicurati di salvare solo ciò di cui hai bisogno.

ci sono tonnellate di altre ottimizzazioni che si possono fare anche se, come ad esempio:

  • Servire i file come contenuto compresso
  • Garantire come gran parte del tuo sito è cache in grado
  • utilizzando sprite CSS e combinando javascript + file CSS per ridurre le richieste HTTP (ridurrà il carico dal server troppo)
  • Minimizzando il vostro javascript, CSS e HTML

Questi sono tutti metodi comprovati per ridurre i tempi di caricamento della pagina.

Per ulteriori informazioni su come velocizzare il caricamento della pagina, scaricare YSlow! plugin per firefox/firebug http://developer.yahoo.com/yslow/

+0

sì ... sono abbastanza sicuro che i tuoi problemi di caricamento non hanno nulla a che fare con i tuoi biscotti –

+0

+1 tutti i buoni suggerimenti. –

+0

per tempi di caricamento generici della pagina, non credo di aver mai trovato uno strumento migliore allora https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl –

0

+1 per una buona domanda, anche se con implicazioni spaventose.

Qualsiasi cosa fatta per eccesso può potenzialmente avere un impatto sulle prestazioni, anche se questo sarà marginale in quasi tutti i casi. Non sono a conoscenza di eventuali ottimizzazioni eseguite da JavaScript per la lettura/scrittura di cookie, ma le cache di lettura/scrittura della maggior parte dei controller del disco dovrebbero attenuare questo I/O al punto di negligenza.

Perché è spaventoso?

  1. I cookie possono esistere limiti di dimensioni/quantità: http://support.microsoft.com/kb/306070 e http://en.wikipedia.org/wiki/HTTP_cookie

  2. Cookies possono essere manipolati, in modo che non siano sicuri (a meno che non si sta con forza la crittografia dei valori in loro, che di prestazioni impatti corso ed è ancora una cattiva idea).

  3. I cookie a volte sono disabilitati.

Hai menzionato che il tuo database è lento, ma l'aggiunta di alcune variabili di sessione non importerà alcun carico aggiuntivo sul tuo database. Oppure prova a manipolare i dati lato client in memoria, o persino a passare alcune variabili (informazioni non sicure, ovviamente) in giro sulla stringa di query.

0

La manipolazione dei cookie non richiederebbe prestazioni elevate. Tuttavia, i cookie verranno taggati lungo alcune o tutte le richieste HTTP (sia in alto che in basso) in base al percorso e alle impostazioni del dominio dei cookie. Se hai un kilobyte di cookie e stai facendo 10 richieste per pagina, stai essenzialmente aumentando il carico utile di richieste e risposte di 10kb ciascuna.

Vedere ServeFromCookielessDomain per ulteriori dettagli.

Problemi correlati