Requisiti: HTTP ora aggiunge un algoritmo di compressione Brotli per testare gli algoritmi Gzip e Brotli. A seconda del progetto, nell'articolo viene testata solo la velocità di decompressione.
Brotli ha12 livelli di compressione, da 0 a 11, dove 0 fornisce la velocità di compressione più veloce ma il rapporto di compressione più basso, mentre 11 fornisce il rapporto di compressione più alto ma richiede più risorse di calcolo e tempo. Quando abbiamo implementato Brotli per la prima volta 5 anni fa, abbiamo determinato che la compressione a 4 livelli offriva un equilibrio tra risparmio di byte e tempo di compressione senza compromettere le prestazioni. Più alto è il livello di compressione, minore è l'ingombro, ma si vendono più risorse di CPU e memoria.
ASP.NET'algoritmo Brotli è già integrato nel core e non richiede riferimento a pacchetti di terze parti. (Questo articolo farà riferimento al pacchetto di terze parti: BrotliSharpLib e a quello integrato per confronto), la configurazione è la seguente:
ASP.NET Core Brotli Frelli chiamata di chiamata: ResponseCompressionServicesExtensions -> AddResponseCompression -> ResponseCompressionProvider -> BrotliCompressionProvider -> BrotliStream.
Il codice di enumerazione del livello di compressione è il seguente:
Crea un nuovo progetto console .NET 6 con il seguente codice di benchmark:
I risultati dei test sono i seguenti:
Ho testato un file da 503kb e, dopo la compressione, non c'è stata molta differenza, tutto intorno ai 400kb, e si è scoperto che la velocità di decompressione di Gzip era comunque superiore a quella di Brotli, che dovrebbe essere la stessafile dimensione, . Versione della rete, livello di compressione, contenuto dei file, eccIn breve, è meglio scegliere la scena che ti si addice.
Se incontri un errore del genere:
Ambiente Riassunto -> Rilevato codice di uscita di errore da uno dei benchmark. Potrebbe essere causata dal seguente software antivirus: - 360 SafeGuard (C:\Program Files (x86)\360\360Safe\safemon\360tray.exe) - Windows Defender (windowsdefender://) Usa InProcessEmitToolchain o InProcessNoEmitToolchain per evitare la creazione di nuovi processi. soluzione
o
(Fine)
|