Brotli è un nuovo algoritmo di compressione sviluppato da Google. La riduzione della risposta a compressione consente un migliore utilizzo dello spazio e un caricamento più rapido delle pagine. In molti casi, Brotli supera gzip. Vantaggi: Per asset web tipici come css, html, js, Brotli supera gzip del 17-25%. Densità Brotli -11 rispetto a gzip-9: html (corpus multilingue): risparmia il 25% di JS (il più alto 10k di Alexa): risparmia il 17% del js che si riduce (top 10k di Alexa): risparmia il 17% di css (top 10k di Alexa): risparmio del 20%.
Introduzione all'algoritmo di Brotli
Brotli è stato originariamente rilasciato nel 2015 per la compressione offline dei font web. Gli ingegneri software di Google hanno rilasciato una versione migliorata di Brotli nel settembre 2015 con un focus particolare sulla compressione HTTP. L'encoder è stato parzialmente riscritto per migliorare il rapporto di compressione, sia l'encoder che il decoder sono stati aumentati per la velocità, e l'API di streaming è stata migliorata per aggiungere maggiori livelli di qualità di compressione. La nuova versione mostra anche miglioramenti nelle prestazioni su tutte le piattaforme e una riduzione della memoria necessaria per la decodifica.
A differenza dei comuni algoritmi di compressione generale, Brotli utilizza un dizionario predefinito da 120 kilobyte. Il dizionario contiene oltre 13.000 parole, frasi e altre sottostringhe comunemente usate da un ampio corpus di testi e documenti HTML. Algoritmi predefiniti possono aumentare la densità di compressione di file più piccoli.
Usare Brotli invece di flate per comprimere i file di testo può solitamente aumentare la densità di compressione del 20%, mentre la velocità di compressione e decompressione è più o meno la stessa. Il tipo di codifica di contenuto per la compressione di flusso usando Brotli è stato proposto per usare "br".
Fratello vs. Gzip
Quando valutiamo gli algoritmi di compressione, ci concentriamo su due indicatori: tasso di compressione e velocità di compressione. Come si può vedere nella figura sopra, indipendentemente da quale dei 9 livelli di compressione di gzip venga utilizzato, il suo rapporto di compressione è inferiore a quello di brotli (rispetto a gzip, può anche essere configurato a 10), e la velocità di compressione è anch'essa più lenta.
Vantaggio Brotli: Brotli supera gzip del 17-25% per asset web tipici come css, html, js. Densità Brotli -11 rispetto a gzip-9: html (corpus multilingue): risparmia il 25% di JS (il massimo di Alexa è 10k): risparmia il 17% di JS che si riduce (top 10k di Alexa): salva il 17% di CSS (top 10k di Alexa): risparmio del 20%
asp.net core abilita Brotli
Valore dell'intestazione Accept-Encoding
Configurazione del codice
Il seguente codice dimostra come abilitare il middleware di compressione responsive per i fornitori di tipo MIME e compressione predefiniti (Brotli e Gzip):
Nota:
- app. UseResponseCompression deve essere incluso nell'app. Usa UseMvc prima di chiamare.
- Usa strumenti come Fiddler, Firebug o Postman per impostare l'intestazione della richiesta Accept-Encoding e studiare l'intestazione della risposta, la dimensione e il corpo.
Di default, il provider di compressione Brotli viene aggiunto all'array del provider di compressione insieme al provider di compressione Gzip. Quando il client supporta il formato dati compresso Brotli, la compressione predefinita è compressione Brotli. Se il client non supporta Brotli, la compressione di default diventa Gzip quando il client supporta la compressione Gzip.
Test di compressione BR
Apri lo strumento di acquisizione pacchetti Fiddler e usa un browser per accedere all'indirizzo del nostro sito web, puoi vedere quanto segue:
Testa richiesta: Accept-Encoding: gzip, deflate, br
Intestazione risposta: Content-Encoding: br
Quando viene eseguita la compressione, l'intestazione Content-Length viene rimossa perché il contenuto del corpo cambia quando la risposta viene compressa.
Quando viene eseguita la compressione, l'intestazione Content-MD5 viene rimossa perché il contenuto del corpo è cambiato e l'hash non è più valido.
Quando asp.net core abilita la funzione https, Brotli non avrà effetto sulla compressione html e json, ma può comprimere js e css. (È possibile che la lunghezza del carattere sia troppo piccola per essere compressa, e dovrebbe essere impostata)
(Fine)
|