Serve un singolo documento da un server a un browser più lento del servire più documenti?

3

Stavo cercando in che modo ottimizzare le pagine web e il modo più grande (in termini di codice) per ottimizzare un sito web è ridurre il numero di richieste che un browser deve fare al tuo server web per ottenere la pagina completa.

I modi più ovvi per farlo sono:

  • Fogli sprite invece di singole immagini
  • Metti tutti i tuoi css in un unico file
  • Metti tutto il tuo javascript in un unico file

Ma cosa succede se ho ottenuto un totale di file? By:

  • Conversione di tutte le immagini in stringhe codificate in base 64, incorporate inline
  • Metti tutti i CSS in linea
  • Metti tutto javascript in linea

Risultato in un file html molto grande, ma senza altre richieste.

Ho caricato file HTML di grandi dimensioni dai server prima (perché contenevano molte informazioni in una tabella o cosa no), e in realtà soffocava il browser caricando un po 'il file. È vantaggioso segmentare ancora alcuni file (come immagini di grandi dimensioni, un singolo file css e js, ecc.) O otterresti le migliori prestazioni da un singolo documento con tutte le risorse incorporate?

    
posta Resorath 23.06.2015 - 23:05
fonte

1 risposta

10

Combinare le risorse è un modo per migliorare potenzialmente le prestazioni di un sito web. Diamo un'occhiata, però, a ciò che accade quando prendiamo questo all'ipotesi estrema che poni.

Risparmio di dimensioni?

Possiamo Base64 codificare le immagini e metterle direttamente in un documento HTML. Il primo problema, tuttavia, è che Base64 codifica un oggetto binario aumenta le sue dimensioni di un fattore del 33% . In questo modo, produciamo file più grandi da scaricare, che possono facilmente superare qualsiasi risparmio dall'eliminazione delle richieste.

Memorizzazione nella cache indipendente

Se mettiamo tutto in un singolo file, abbiamo unito tutte le modifiche a quel file. Ciò significa che se il file HTML cambia, anche quel file e tutte le risorse in esso dovranno essere nuovamente scaricati. Lo stesso vale per le modifiche a qualsiasi altra risorsa. Se i file sono separati, vengono memorizzati nella cache separatamente e solo i file che cambiano devono essere nuovamente scaricati. ( HTTP fornisce tutti i meccanismi necessari per questo. )

Riutilizzo

L'inserimento di tutto in un singolo file impedisce il riutilizzo delle risorse memorizzate nella cache su altre pagine. Supponiamo di avere una home page e una pagina relativa con lo stesso foglio di stile. Con più risorse, quel foglio di stile deve essere scaricato solo quando ne visitiamo uno, quindi la versione cache può essere utilizzata quando visitiamo l'altro. Se tutto è incorporato direttamente in ogni file, lo stesso CSS viene scaricato più e più volte per ogni pagina.

Download paralleli e pipelining

In HTTP / 1.0, gli sviluppatori di browser si sono resi conto che il download di tutte le risorse in modo seriale avrebbe causato un rallentamento del caricamento della pagina poiché le risorse si sarebbero caricate solo una dopo l'altra. In risposta, gli sviluppatori del browser hanno scritto in consentire più connessioni in modo che le risorse possono essere scaricate in parallelo, quindi tutte rese insieme. Ciò ha fornito un po 'di velocità.

HTTP 1.1 ha introdotto molti nuovi strumenti per l'ottimizzazione delle prestazioni. Tra questi c'era l'introduzione del pipeline . Invece di aspettare che una risposta finisse, quindi inviando la richiesta successiva, i browser potevano sfruttare la natura full-duplex delle connessioni TCP e inviare la richiesta successiva non appena si rendeva conto che doveva farlo. Ciò ha consentito il download delle risorse senza ritardi tra le parti, accelerando anche le prestazioni.

Con il tuo modello a pagina singola, i browser non sarebbero in grado di sfruttare le connessioni parallele per scaricare risorse diverse contemporaneamente. Ciò potrebbe rendere la pagina caricata più lenta . Con l'introduzione del pipelining, HTTP ci consente di offrire un effetto simile al download di un singolo file senza interruzioni.

Sebbene la combinazione di alcuni file abbia senso quando viene misurata in situazioni reali, la combinazione di un file ogni potrebbe effettivamente ritorcersi contro.

    
risposta data 23.06.2015 - 23:28
fonte

Leggi altre domande sui tag