Preferire brotli, smettere di comprimere ciò che è già compresso

OtherKlusterServices
Spegnimento
20 agosto 2026 alle ore 22:46 UTC
Autore
Kamo
Impegno
3f36bd0

Il middleware condiviso `compress` era `compresso: {}`, che è tre di default separati e nessuno di loro è quello che vogliamo. Traefik sceglie gzip ogni volta che il cliente lo offre affatto, indipendentemente da l'ordine richiesto dal cliente. Misurato contro api.kamocrm.com, che è Spring Boot e non comprime alla propria origine: Codifica: gzip, deflato, br, zstd -> gzip 119 bytes Codifica: br, gzip -> gzip 119 bytes Codifica dell'accettazione: br -> br 87 byte La seconda linea è il risultato: chiedere per brotli prima ancora restituito Gzip. Ogni browser invia gzip, quindi niente dietro questa catena ha mai brotli ricevuti — circa il 25% di ogni risposta JSON da ogni Java servizio, assegnato a un default di ordinazione. È anche compresso cose che sono già compressi. /favicon/favicon-96x96.png è di 12.763 byte e tornato come 12.793 — più grande, più compressore CPU qui e decompressore CPU nel browser, su ogni richiesta di immagine su ogni sito della catena. L'ospite tema già risolto questo con una lista dei permessi (`theme-compress`); lo stesso PNG servito da lì passa attraverso intatto. Questo porta la catena condivisa Linea. E ha compresso corpi troppo piccoli a beneficio: api.kamocrm.com's 404 corpo è 99 byte come identità e 119 byte gzipped. minResponseBodyBytes è ora impostato piuttosto che assunto. La lista dei permessi è una lista dei permessi piuttosto che un elenco delle esclusioni specificatamente a causa del testo/event-stream. Comprimerlo SSE, che è l'unica cosa che un flusso non deve fare; una lista consentita lo esclude per costruzione. testo/x-componente è nella lista di proposito — Prossimo 16 prefetches every <Link> in viewport as RSC, 60-100 KB apiece, and lasciare fuori sarebbe silenziosamente un-fix che per ogni app Next che fa non comprimere alla sua origine. CRD rigenerati da v3.3 nello stesso commit, perché `encodings` richiede Traefik >= 3.2 e i CRD impegnati sono stati generati per un pre-3.2 rilascio mentre il binario in esecuzione è v3.3. Il campo avrebbe stato SILENTLY PRUNED dal server API, non respinto — ogni applicazione in dispiegare-services.yml passa --validate=false — così questo avrebbe guardato applicato e cambiato nulla. Schema diff verificato puramente additivo: 88 campi aggiunti, 0 rimossi, stessi 10 CRD, stesse versioni, e `kubectl si applica --dry-run=server` accetta tutte le dieci.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo