2010-10-17 15 views
10

Ho letto da qualche parte che l'organizzazione degli attributi HTML in un determinato ordine può migliorare la velocità di compressione per il documento HTML. (Penso di aver letto questo da Google o da Yahoo per i siti più veloci). Se ricordo correttamente, la raccomandazione era quella di mettere gli attributi più comuni per primi (ad esempio id, ecc.) Quindi mettere il resto in ordine alfabetico.Ordine ottimizzato degli attributi HTML per la compressione

Sono un po 'confuso da questo. Ad esempio, se gli attributi id sono stati posizionati subito dopo ogni tag p, lo id conterrà valori univoci. Pertanto, la stringa duplicata sarebbe limitata a questo: <p id=" (ad esempio, c'erano <p id="1"> e <p id="2"/>). Poiché il valore di id deve essere univoco, vedo che ciò causa effettivamente un effetto negativo sulla compressione.

Mi sbaglio?

Se dovessi passare attraverso una pagina Web statica con attributi ordinati casualmente, quale logica dovrei usare per organizzare gli attributi per ottenere la massima compressione?

NOTA: sto parlando di compressione GZIP (se quello che conta): http://www.gzip.org/algorithm.txt

risposta

13

Il vostro scopo è quello di incoraggiare i contenuti ripetuto. Pertanto, <p class="foo" id="a">bar</p>...<p class="foo" id="b">bof</p> potrebbe essere più semplice da comprimere rispetto a <p id="a" class="foo">bar</p>...<p id="b" class="foo">bof</p> ed entrambi, in genere, sarebbero più facili da comprimere rispetto a <p class="foo" id="a">bar</p>...<p id="b" class="foo">bof</p>.

Ma in realtà, la differenza sarà minuscola. Faresti molto meglio a scrivere il tuo markup nel modo più leggibile a tuo vantaggio e lasciare che mod_deflate faccia il suo lavoro. Dovrai fare molto per salvare anche un singolo pacchetto TCP con questo tipo di micro-ottimizzazione, e la seconda ipotesi del compressore a livello micro può spesso generare risultati imprevisti, possibilmente negativi.

Per alcuni elementi la leggibilità potrebbe anche significare mettere gli attributi "comuni" per primi, ad esempio <input type> è solitamente il primo attributo elencato; tipicamente elaborerai il tuo stile di ordine degli attributi e se è coerente suppongo che ti risparmi qualche byte qua e là. Non sceglierei l'alfabeto grezzo come l'ordine coerente. Tutto ciò che ha successo è che è ciò che produrrà l'XML canonico.

Anche la prima pagina di google.com, tristemente nota per la sua dedizione alla cancellazione dei byte a scapito della leggibilità, della convalida di base e di ogni tipo di buona pratica, non si preoccupa di utilizzare un unico ordine coerente per gli attributi.

Problemi correlati