Stavo ottimizzando il tempo di caricamento della pagina di un sito Web. Uno dei modi era combinando più richieste HTTP per CSS in una richiesta HTTP combinata. Ma uno dei revisori ha posto una domanda interessante: la paralizzazione del download di più file CSS non ridurrebbe i tempi di caricamento della pagina?
Non ho mai preso in considerazione questa opzione, poiché l'unica cosa che leggo su Internet è che ridurre il numero di (bloccando) richieste HTTP è la chiave per una pagina web più veloce (anche se Google Pagespeed Insights non sembra dichiararlo chiaramente 1 ).
Vedo alcuni motivi per cui la parallelizzazione non migliorerebbe le prestazioni, o conta solo pochissimo (compensata dal vantaggio di utilizzare un minor numero di richieste HTTP):
- La creazione di una nuova connessione è costosa. Mentre l'impostazione di più connessioni può essere eseguita in parallelo, i browser utilizzeranno al massimo circa 4-6 connessioni (a seconda del browser), quindi il download di CSS in parallelo bloccherebbe il download di altre risorse come JavaScript e immagini.
- L'impostazione di una connessione HTTPS richiede alcuni dati extra. Ho letto che possono essere facilmente pochi KB di dati. Questi sono alcuni dati extra che devono essere inviati via cavo, anziché i CSS che vogliamo effettivamente inviare.
- A causa dell'algoritmo TCP Slow Start, più dati sono stati inviati tramite una connessione, più veloce sarà la connessione. Quindi connessioni più a lungo inviate in realtà invierebbero i dati molto più velocemente rispetto alle nuove connessioni. Vedi ad esempio il protocollo SPDY, che utilizza una singola connessione per migliorare i tempi di caricamento della pagina.
- TCP è un'astrazione: c'è ancora (normalmente) solo una connessione sottostante. Pertanto, mentre vengono utilizzate più richieste, i dati inviati tramite il filo potrebbero non trarre necessariamente vantaggio da più connessioni per migliorare la velocità.
- Le connessioni Internet sono intrinsecamente inaffidabili, soprattutto su dispositivi mobili. Una richiesta può essere completata in modo significativamente più veloce dell'altra. L'uso di più richieste per CSS significa che il rendering della pagina Web è bloccato fino al termine dell'ultima richiesta, che può essere significativamente più tardi della connessione media.
Quindi, c'è qualche vantaggio nel parallelizzare le richieste HTTP per i file CSS?
Nota / aggiornamento: tutti i file CSS bloccano il rendering. I file CSS che non sono già stati spostati al di fuori del percorso critico.