Panduan Compression (Gzip, Brotli, Zstd)

Bagaimana HTTP text compression berfungsi — Gzip vs Brotli vs Zstd, apa Googlebot sebenarnya mendukung, bagaimana ini feeds Core Web Vitals dan crawler fetch limits, dan cara enable dan verify ini oleh server. web-performa deep dive pada shrinking bytes pada wire.

Pertama kali diterbitkan: 3 Jul 2026 · Terakhir diperbarui: 8 Agu 2026 · Advanced
Bahasa

Compression (HTTP konten encoding) shrinks text-based respons — HTML, CSS, JS, JSON, SVG, sitemap XML — sebelum mereka cross network, negotiated per permintaan melalui Accept-Encoding / konten-Encoding, dengan Vary: Accept-Encoding needed untuk pertahankan cached variants straight. Brotli biasanya melakukan better daripada Gzip pada text (sering cited sekitar 15–20% lebih kecil, tetapi itu's directional, tidak sebuah guaranteed ratio) dan adalah Google's stated preference ketika client mendukung ini; Gzip adalah universal fallback; Zstd adalah sebuah registered tetapi tidak universally didukung ketiga codec, dan Google's crawler docs jangan state Zstd mendukung untuk Googlebot. Googlebot explicitly mendukung gzip, deflate, dan Brotli (br) — stated plainly di Google's saat ini crawler docs, informally confirmed oleh Gary Illyes di 2020, dan rooted di Google's 2008 'pertama date dengan Googlebot' post. Compression tidak sebuah peringkat factor dan tidak jaminan sebuah TTFB/LCP atau Penelusuran improvement pada -nya own; ini reduces transfer size, yang dapat help TTFB dan LCP jika itu's sebenarnya Anda bottleneck, dan ini helps halaman stay di bawah Google's fetch limit (2 MB untuk HTML per Illyes' 2026 'Di dalam Googlebot' post). jangan blanket-exclude formats oleh extension alone — decide dari MIME jenis dan diukur output; sudah-compressed formats (images, video, WOFF2, sebagian besar PDFs) rarely benefit. gunakan lebih tinggi compression untuk static/pre-compressed assets dan sebuah lebih rendah/mid-range tingkat untuk dynamic konten, benchmarked terhadap Anda own traffic dan CPU headroom — Tidak single tingkat adalah universally best. BREACH-style risk adalah scoped untuk respons itu mix sebuah secret dengan attacker-reflected konten, tidak sebuah alasan untuk disable compression sitewide. dan Ya — Sitemaps protocol explicitly memungkinkan gzip-compressed sitemaps.

TL;DR — Compression adalah HTTP konten-encoding negotiation: client mengirim Accept-Encoding (yang dapat carry q weights dan identity), server replies dengan Content-Encoding, per permintaan, per resource — dan sebuah cacheable respons itu varies oleh coding perlu Vary: Accept-Encoding. Brotli biasanya beats Gzip pada yang sama text (sering cited sekitar 15–20%, though tepat margin bergantung pada konten, codec versi, dan tingkat) dan adalah Google’s stated preference ketika didukung; Gzip adalah universal fallback; Zstd adalah sebuah registered tetapi tidak universally didukung ketiga codec (Google’s crawler docs jangan state Zstd mendukung untuk Googlebot). Googlebot mendukung gzip, deflate, dan Brotli (br) — plainly terdokumentasi hari ini, informally confirmed oleh Gary Illyes di 2020, dan rooted di Google’s 2008 “Pertama date dengan itu Googlebot” (terjemahan) “pertama date dengan Googlebot” post. Compression tidak sebuah peringkat factor dan tidak jaminan sebuah TTFB/LCP atau Penelusuran perubahan pada -nya own; ini shrinks transfer size, yang dapat help TTFB → LCP jika itu’s Anda sebenarnya bottleneck, dan ini helps halaman stay di bawah Google’s fetch limit (2 MB untuk HTML per 2026 “Di dalam Googlebot” (terjemahan) “Di dalam Googlebot” post) — sebuah crawl-efficiency win, tidak hanya sebuah speed satu. Decide apa untuk (tidak) compress dari MIME jenis dan diukur output, tidak sebuah blanket extension list; BREACH-style risk adalah scoped untuk respons mixing sebuah secret dengan attacker-reflected konten, tidak sebuah alasan untuk disable compression sitewide. gunakan lebih tinggi compression untuk static/pre-compressed assets, sebuah lebih rendah/mid-range tingkat untuk dynamic konten — benchmarked terhadap Anda own traffic dan CPU, since Tidak single tingkat adalah universally best. dan Sitemaps protocol explicitly memungkinkan gzip-compressed sitemaps.

Evidence for this claim HTTP content coding compresses transferred representations and is negotiated with Accept-Encoding and Content-Encoding. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP compression Evidence for this claim Brotli is an HTTP content coding supported through the br encoding token. Scope: Current official or standards documentation. Confidence: high · Verified: RFC 7932: Brotli

Apa compression sebenarnya adalah

Compression — properly, HTTP konten encoding — shrinks sebuah text-based respons body sebelum ini crosses network, so client downloads fewer bytes dan decompresses them locally. ini adalah negotiated per permintaan. sebagai Google’s Lighthouse docs deskripsikan ini: “When a browser requests a resource, it will use the Accept-Encoding HTTP request header to indicate what compression algorithms it supports.” (terjemahan) “Saat browser meminta resource, browser menggunakan header permintaan HTTP Accept-Encoding untuk menyatakan algoritma kompresi yang didukungnya.” sebuah header tipikal terlihat seperti Accept-Encoding: gzip, deflate, br. server picks satu dan sinyal -nya pilihan back di Content-Encoding respons header.

Dua boundaries worth menjadi precise tentang, straight dari HTTP specification (RFC 9110): konten coding adalah sebuah transformation dari representation data — respons body — dan itu’s sebuah berbeda hal dari transfer coding, yang operates pada message sebagai ini moves di seluruh sebuah connection. Compression sebagai discussed pada ini halaman adalah konten coding, identified oleh Content-Encoding. negotiation itself tidak hanya sebuah flat list — Accept-Encoding dapat carry weights (q nilai) peringkat sebuah client’s preference among codings ini adalah willing untuk accept, dan ini dapat juga express sebuah refusal (q=0); identity adalah token untuk “Tidak coding applied.” (terjemahan) “Tidak coding applied.” (RFC 9110, §8.4 dan §12.5.3.) dan jika sebuah cacheable respons’s body sebenarnya differs oleh negotiated coding — sebuah gzip variant dan sebuah Brotli variant dari yang sama URL, say — respons perlu Vary: Accept-Encoding so sebuah cache tidak sajikan wrong variant untuk sebuah client itu dapat’t decode ini (RFC 9110, §12.5.5; Apache’s mod_deflate docs deskripsikan ini tepat Vary requirement untuk compressed cache variants).

ini applies untuk text: HTML, CSS, JavaScript, JSON, SVG, dan XML (sitemaps disertakan). Keduanya Gzip dan Brotli dapat shrink text assets substantially — Google’s own PageSpeed guidance cites sebuah ceiling: “Enabling gzip compression dapat reduce itu size dari itu transferred response oleh up untuk 90%.” (terjemahan) “Enabling gzip compression dapat reduce size dari transferred respons oleh up untuk 90%.” Treat itu sebagai sebuah ceiling, tidak sebuah typical angka — sebenarnya savings pada apa pun diberikan respons bergantung pada konten’s redundancy, -nya size, apakah ini adalah sudah minified, codec/versi dan dictionary digunakan, dan compression tingkat, so mereka dapat’t menjadi generalized dari satu situs’s angka untuk lainnya’s.

Dua hal ini adalah tidak, dan keduanya penting:

  • Tidak minification. Minification menghapus characters dari sumber (whitespace, comments); compression re-encodes resulting bytes untuk transfer. mereka stack — minify pertama, lalu compress — dan skipping either leaves savings pada table.
  • Tidak caching. Compression adalah tentang encoding (shrinking bytes pada wire); caching adalah tentang storage dan reuse (Cache-Control, ETag, CDNs). mereka’re complementary “bagaimana bytes mendapatkan untuk itu browser efficiently” (terjemahan) “bagaimana bytes mendapatkan untuk browser efficiently” levers. See caching untuk storage side.

ini halaman adalah compression deep dive di bawah critical rendering path hub, yang lists “compress text” (terjemahan) “compress text” sebagai satu bullet di -nya lebih luas critical-bytes checklist. ini adalah di mana itu bullet mendapatkan -nya penuh treatment.

Gzip vs Brotli vs Zstd

Compression ratio

Brotli umumnya melakukan better pada text, tetapi jangan treat apa pun spesifik angka sebagai universal. Google’s Lighthouse doc adalah jelas itu audit’s reported savings adalah computed dengan Gzip, dan “jika Brotli adalah digunakan, even lebih savings adalah possible.” (terjemahan) “jika Brotli adalah digunakan, bahkan lebih savings adalah mungkin.” Google’s own web.dev Brotli codelab menampilkan satu concrete contoh: sebuah main.bundle.js itu adalah 225 KB uncompressed came down untuk roughly 61,6 KB dengan Gzip dan tentang 53,1 KB dengan Brotli — tentang 14% lebih kecil dengan Brotli pada itu satu file. angka like itu (dan “~15–20%” (terjemahan) “~15–20%” figure Anda’ll see elsewhere) adalah directional, tidak sebuah jaminan — nyata margin pada apa pun diberikan asset bergantung pada codec/library versi, compression tingkat chosen, konten’s redundancy, dan apakah ini adalah sudah minified. Tidak codec atau quality tingkat adalah “selalu best” (terjemahan) “selalu best” independent dari apa Anda’re compressing; benchmark Anda own assets alih-alih porting seseorang else’s percentage.

Gzip adalah universal fallback. ini adalah didukung di mana-mana, yang adalah persis mengapa Google recommends ini sebagai safety net: “Use GZIP as a fallback to Brotli. GZIP is supported in all major browsers, but is less efficient than Brotli.” (terjemahan) “Gunakan GZIP sebagai fallback untuk Brotli. GZIP didukung di semua browser utama, tetapi kurang efisien daripada Brotli.”

Zstd adalah sebuah ketiga registered codec, belum sebuah safe default. IANA’s HTTP konten coding registry lists gzip, br, dan zstd — tetapi registration di itu list tidak yang sama sebagai universal client, crawler, origin, atau CDN mendukung, so hanya advertise apa sebuah diberikan permintaan memiliki sebenarnya ditanyakan untuk dan pertahankan sebuah berfungsi fallback path. untuk HTTP interoperability secara khusus, RFC 9659 (yang memperbarui sebelumnya RFC 8878 zstd registration) memerlukan decoders untuk mendukung windows melalui 8 MB dan forbids encoders dari requiring sebuah lebih besar window daripada itu — worth knowing jika Anda’re configuring sebuah server atau CDN untuk ini. itu HTTP konten coding, zstd, adalah juga sebuah distinct hal dari dictionary-based compression coding dcz; jangan conflate dua ketika reading vendor docs. dunia nyata adoption adalah masih early (Caddy, untuk instance, exposes encode zstd gzip), dan Google’s saat ini crawler documentation lists gzip, deflate, dan Brotli untuk -nya crawler dan fetchers — ini melakukan tidak state Zstandard mendukung untuk Googlebot, so jangan assume ini adalah bagian dari itu lineup. Treat Zstd sebagai satu untuk watch dan enable di mana Anda stack mendukung ini dan permintaan menanyakan untuk ini, tidak sebagai sebuah Gzip/Brotli replacement namun.

Evidence for this claim gzip, br and zstd are registered HTTP content codings, but registration is not universal client, crawler, origin or CDN support; deploy only a coding advertised for the individual request and preserve a valid identity or fallback path. For HTTP interoperability, RFC 9659 requires zstd decoders to support windows through 8 MB and encoders not to require larger windows; this `zstd` coding is distinct from dictionary coding `dcz`. Scope: registry Confidence: high · Verified: HTTP Content Coding Registry

browser dan crawler mendukung

Brotli mendukung adalah now effectively universal di browser, tetapi itu tidak selalu benar — dan historical kesenjangan adalah worth knowing karena ini adalah mengapa Gzip fallback masih penting. Google’s Lighthouse doc notes: “As of December 2022 Brotli is supported in all major browsers except Safari on iOS.” (terjemahan) “Per Desember 2022, Brotli didukung di semua browser utama kecuali Safari pada iOS.” itu Safari-pada-iOS kesenjangan adalah canonical contoh dari mengapa Anda pertahankan Gzip di chain.

Google recommends Brotli setiap kali client dapat take ini: “If the browser supports Brotli (br) you should use Brotli because it can reduce the file size of the resources more than the other compression algorithms.” (terjemahan) “Jika browser mendukung Brotli (br), gunakan Brotli karena dapat mengurangi ukuran file resource lebih banyak daripada algoritma kompresi lainnya.”

Ketika untuk masih fall back untuk Gzip

selalu pertahankan Gzip configured alongside Brotli. konten-encoding adalah negotiated per permintaan, so sebuah properly configured server menyajikan Brotli untuk clients itu advertise br dan Gzip untuk everyone else secara otomatis — Anda’re tidak choosing satu atau lainnya, Anda’re offering keduanya dan letting handshake decide.

melakukan Google (dan Bing) mendukung Brotli dan Gzip?

ini adalah pertanyaan sebagian besar compression artikel assert tanpa evidence. Di sini ini adalah dengan sebuah dated, three-poin trail dari Google’s own statements.

2008 “Pertama date dengan itu Googlebot” (terjemahan) “pertama date dengan Googlebot” post

Google memiliki dijelaskan compression di -nya own voice since 2008. di pertama date dengan Googlebot: Headers dan compression (Maile Ohye dan Jeremy Lilley), Google wrote itu semua major mesin pencari dan web browser mendukung gzip compression untuk save bandwidth, dan itu Anda mungkin juga see x-gzip (yang sama sebagai gzip), deflate (yang Google juga mendukung), dan identity (none). yang sama post adalah di mana Google menjelaskan itu banyak file formats — Flash, JPG, PNG, GIF, PDF — adalah sudah compressed, so ada little untuk gain dari compressing them again. ini bahkan status sebuah mild preference untuk gzip di atas deflate pada robustness grounds (gzip carries sebuah checksum dan penuh header, leaving lebih sedikit guesswork). ini adalah sebuah old post dengan sebuah “outdated” (terjemahan) “outdated” banner, tetapi body adalah langsung dan secara langsung pada-topic, dan hampir Tidak saat ini artikel cites ini.

2008 post adalah quoted di sini tanpa quotation marks / deep tautan: brief verified ini lines sebagai tepat substrings melalui direct fetch, tetapi formal #:~:text= fragment tautan tidak constructed untuk itu legacy template, so mereka’re paraphrased alih-alih presented sebagai verbatim pull-quotes.

Gary Illyes’ 2020 Brotli konfirmasi

Brotli mendukung untuk Googlebot adalah confirmed informally sebelum ini adalah formally terdokumentasi. di August 2020, Google’s Gary Illyes mengatakan, setelah memenuhi dengan Googlebot team, itu he’d telah ditanyakan sebuah sedikit weeks sebelumnya apakah Googlebot mendukung Brotli compression — dan ini melakukan. Barry Schwartz reported ini yang sama day di mesin pencari Roundtable. itu lebih lama dari saat ini crawler-overview documentation oleh tentang four tahun — sebuah nice reminder itu sebuah rep dapat konfirmasi crawler perilaku panjang sebelum ini lands di docs.

saat ini official crawler documentation

Hari ini sudah dinyatakan dengan jelas. Google’s crawler (pengguna agent) Overview says: “Google’s crawlers and fetchers support the following content encodings (compressions): gzip, deflate, and Brotli (br).” (terjemahan) “Crawler dan fetcher Google mendukung encoding konten berikut (kompresi): gzip, deflate, dan Brotli (br).” dan ini menjelaskan per-permintaan negotiation yang sama cara sebuah browser melakukan: “The content encodings supported by each Google user agent is advertised in the Accept-Encoding header of each request they make. For example, Accept-Encoding: gzip, deflate, br.” (terjemahan) “Encoding konten yang didukung setiap user agent Google diiklankan dalam header Accept-Encoding pada setiap permintaan yang dibuatnya. Contoh: Accept-Encoding: gzip, deflate, br.” I say yang sama hal di my Ahrefs Googlebot guide, yang memiliki sebuah dedicated konten-encoding bagian: “Googlebot supports gzip, deflate, and Brotli (br).” (terjemahan) “Googlebot mendukung gzip, deflate, dan Brotli (br).”

So lineage adalah: 2008 blog post → 2020 Illyes konfirmasi → saat ini crawler docs. ini adalah well-established, tidak speculative.

Bing documentation kesenjangan

Bing adalah honest asterisk di sini. ada Tidak detailed, publik Bing document stating yang konten encodings Bingbot negotiates ketika crawling ordinary HTML — tidak ada apa pun equivalent untuk Google’s crawler-overview halaman. Apa Bing melakukan document adalah lebih sempit: -nya konten Submission API mendukung Gzip, dan Anda dapat submit gzip-compressed sitemap files (.xml.gz) untuk Bing. Karena HTTP compression adalah sebuah standard mechanism itu essentially semua modern clients negotiate melalui Accept-Encoding, ini adalah reasonable untuk assume Bingbot menangani Gzip di minimum — tetapi treat itu sebagai sebuah inference dari bagaimana HTTP berfungsi, tidak sebagai sebuah terdokumentasi Bing statement. ini adalah sebuah genuine documentation-transparency kesenjangan antara dua mesin, tidak sebuah knock pada Bingbot’s sebenarnya perilaku.

Mengapa compression penting untuk performa dan Core Web Vitals

causal chain (state ini precisely)

Compression adalah tidak sebuah direct peringkat factor. mechanism ini feeds adalah: lebih kecil transfer size dapat shorten download time, yang dapat help Time untuk pertama Byte dan downstream Largest Contentful Paint, yang factor ke Core Web Vitals — sebuah halaman-experience sinyal. Note “dapat” (terjemahan) “dapat”: Google’s own guidance bounds guaranteed outcome untuk fewer network bytes, tidak sebuah guaranteed TTFB/LCP win, better Core Web Vitals, atau sebuah Penelusuran perubahan — jika Anda muat adalah bottlenecked elsewhere (sebuah slow database kueri, sebuah render-blocking script, DNS/connection setup), compressing sebuah sudah-kecil respons tidak akan move needle. mengukur Anda own bottleneck dan field outcome rather daripada assuming compression alone memperbaiki speed. hal itu’s scored adalah speed outcome, tidak compression setting. Getting ini right penting karena sebuah lot dari pesaing konten conflates “helps SEO” (terjemahan) “helps SEO” dengan “ranking factor.” (terjemahan) “peringkat factor.” (See Time untuk pertama Byte, Largest Contentful Paint, dan Core Web Vitals.)

Evidence for this claim Reducing transferred bytes may improve a network-bound load, but compression alone does not guarantee lower TTFB/LCP, better Core Web Vitals or a Search change; measure the actual bottleneck and field outcome. Scope: lab audit Confidence: high · Verified: Enable text compression

ada sebuah nice framing dari Google’s Martin Splitt pada mengapa mentah halaman weight adalah sebuah misleading cara untuk think tentang ini: apa penting adalah apa sebenarnya goes di atas wire setelah compression, tidak uncompressed size pada disk — sebuah halaman itu looks like 10 MB uncompressed mungkin menjadi five atau six di atas network. itu Splitt poin adalah relayed melalui mesin pencari Journal’s reporting alih-alih sebuah utama transcript, so ini adalah paraphrased di sini, tidak quoted.

Compression dan crawl efficiency — underrated angle

Compression tidak hanya tentang kecepatan halaman untuk humans. ini juga helps Anda stay di bawah Google’s fetch limit. sebagai dari 2026 “Di dalam Googlebot” (terjemahan) “Di dalam Googlebot” perbarui (Gary Illyes), Googlebot fetches roughly 2 MB per URL untuk HTML (down dari older 15 MB figure), dan konten beyond limit adalah truncated, tidak rejected — hanya downloaded portion adalah lulus pada untuk pengindeksan. Compressing Anda HTML adalah satu dari levers itu mempertahankan critical konten di dalam itu budget, so ini adalah sebuah crawl-efficiency concern, tidak hanya sebuah Core Web Vitals satu. (Lebih pada limit di crawling.)

Lighthouse “Enable text compression” (terjemahan) “audit aktifkan kompresi teks” — tepat thresholds

PageSpeed Insights / Lighthouse “Enable text compression” (terjemahan) “aktifkan kompresi teks” audit memiliki precise trigger aturan worth naming. Lighthouse gathers text-based respons itu jangan sudah carry sebuah content-encoding dari br, gzip, atau deflate, compresses setiap satu dengan Gzip untuk estimate savings, dan — per Google’s doc — “If the original size of a response is less than 1.4KiB, or if the potential compression savings is less than 10% of the original size, then Lighthouse does not flag that response in the results.” (terjemahan) “jika original size dari sebuah respons adalah lebih sedikit daripada 1,4KiB, atau jika potential compression savings adalah lebih sedikit daripada 10% dari original size, lalu Lighthouse melakukan tidak flag itu respons di hasil.” So kecil files di bawah ~1,4 KiB tidak akan trip warning bahkan uncompressed. (sebagai dari Lighthouse 13 ini audit adalah folded ke lebih luas “Document request latency” (terjemahan) “Document permintaan latency” insight, tetapi underlying guidance adalah unchanged.)

Mengapa sebuah correctly-configured situs dapat masih fail audit

sebuah genuinely berguna troubleshooting nugget straight dari Google’s PageSpeed documentation: “Proxy servers and anti-virus software can disable compression when files are downloaded to a client machine.” (terjemahan) “Proxy server dan anti-virus software dapat disable compression ketika files adalah downloaded untuk sebuah client machine.” itu berarti sebuah compression checker dapat report sebuah salah negative — “compression isn’t enabled” (terjemahan) “compression tidak enabled” — bahkan ketika Anda server adalah configured correctly, karena sebuah intermediary stripped Content-Encoding header di transit. sebelum Anda assume report adalah rusak atau itu Anda server adalah misconfigured, test dari sebuah bersih network path.

Static vs dynamic compression — implementation trade-offs

Compression tingkat

Keduanya algorithms memiliki adjustable tingkat trading CPU time terhadap ratio:

  • Gzip: tingkat 1–9.
  • Brotli: tingkat 0 (Tidak compression) untuk 11 (maximum), per Google’s web.dev codelab.

Lebih tinggi tingkat squeeze harder tetapi cost lebih CPU time.

CPU cost — dan mengapa static vs dynamic penting

Compression tidak free; ini burns CPU, dan cost profile adalah completely berbeda untuk pre-dibangun assets versus konten generated pada fly. right setting tidak sebuah single universal angka untuk either case — ini bergantung pada bagaimana sering underlying konten perubahan, bagaimana Anda cache/CDN layer menangani compressed variant, Anda traffic volume, dan apa Anda sebenarnya mengukur, tidak hanya sebuah aturan dari thumb copied dari sebuah blog post.

  • Static (pre-compressed / bangun-time) assets — konten itu’s stable cukup untuk compress setelah ahead dari time (nginx’s gzip_static dan Apache’s mod_deflate keduanya document selecting sebuah precompressed file alih-alih recompressing per permintaan) dapat afford lebih tinggi compression tingkat, karena CPU cost adalah paid setelah di bangun time alih-alih pada setiap permintaan. sebagai web.dev codelab puts ini, ketika compression happens ahead dari time, latency dari tinggi compression tingkat tidak sebuah concern anymore; trade-off shifts untuk lebih lama bangun times, yang Anda pay setelah, tidak per pengunjung.
  • Dynamic (generated-per-permintaan) respons — compressing di highest tingkat di nyata time menambahkan latency untuk setiap respons, so sebuah lebih rendah/mid-range tingkat adalah sebuah umum starting poin (tooling sometimes defaults Brotli untuk sekitar quality 4 untuk dynamic konten sebagai sebuah starting ratio-vs-speed balance) — tetapi treat itu sebagai sebuah starting poin untuk benchmark terhadap Anda own CPU headroom dan traffic, tidak sebuah fixed aturan. Google flagged ini trade-off sebagai far back sebagai 2008 post: enabling gzip/deflate memiliki sebuah CPU cost, dan pada sebuah server sudah heavily CPU-dimuat serving dynamic konten, ini adalah worth weighing sebelum mengubah maximum compression pada untuk semuanya.

practical starting poin adalah lebih tinggi untuk static, lebih rendah/mid-range untuk dynamic — tetapi konfirmasi ini terhadap Anda own mutability, cache/CDN perilaku, traffic, dan sebuah diukur sebelum/setelah, tidak sebuah tingkat angka lifted dari sebuah artikel (including ini satu).

cara enable compression

mechanism adalah yang sama di mana-mana — configure server (atau CDN/edge) untuk compress text respons dan advertise Brotli dengan sebuah Gzip fallback. oleh platform:

  • Apachemod_deflate module (dan mod_brotli untuk Brotli). Google’s PageSpeed guidance poin di sini secara langsung.
  • Nginx — dibangun-di ngx_http_gzip_module (gzip on; plus gzip_types), dan Brotli module untuk br.
  • IIS — dibangun-di HTTP Compression (static dan dynamic).
  • CDN / edge — Cloudflare, Fastly, dan similar typically offer Brotli + Gzip sebagai sebuah toggle; Caddy exposes encode zstd gzip.
  • App kerangka kerja — Node/Express compression middleware; Berikutnya.js/Vercel dan sebagian besar modern hosts compress oleh default.

lalu verify ini (see Checklists lens untuk tepat commands). fastest periksa: curl -I -H "Accept-Encoding: br, gzip" https://example.com/ dan cari sebuah content-encoding header di respons.

Apa Tidak untuk compress

jangan re-compress sudah-compressed formats: JPG, PNG, GIF, sebagian besar video, WOFF2 fonts, dan sebagian besar PDFs. mereka’re sudah compressed internally; berjalan Gzip atau Brotli di atas them again spends CPU untuk negligible — occasionally negative — size perubahan. Treat itu list sebagai contoh, tidak sebuah exhaustive rulebook — GTmetrix’s own troubleshooting guidance frames ini yang sama cara: sudah-compressed atau tinggi-entropy formats “may not benefit and can grow.” (terjemahan) “dapat tidak benefit dan dapat grow.” safer umum aturan adalah untuk cakupan compression oleh MIME jenis (text-based formats) dan, di mana Anda dapat, periksa diukur output untuk sebuah diberikan respons alih-alih trusting sebuah blanket file-extension list, since format dan konten vary.

ada juga Tidak single universal minimum respons size di bawah yang compression “doesn’t count” (terjemahan) “tidak count” — framing dan metadata overhead dapat erase savings pada kecil atau sudah-dense bodies, tetapi di mana itu break-bahkan poin sits bergantung pada codec, implementation, respons headers, dan konten itself. Lighthouse’s own 1,4 KiB / 10%-savings thresholds (di atas) adalah itu spesifik audit’s suppression aturan, tidak sebuah umum size floor — sebuah CDN dapat (dan sering melakukan) publish -nya own, berbeda minimum untuk ketika ini akan bother compressing sebuah respons di semua.

Evidence for this claim Framing and metadata overhead can erase savings for small or poorly compressible bodies; there is no universal minimum response size because codec, implementation, headers and content determine the break-even point. Scope: lab audit Confidence: high · Verified: Enable text compression

Compression dan BREACH — scoped, tidak sebuah alasan untuk disable compression sitewide

Anda dapat see security advice suggesting Anda turn compression off out dari caution. jangan generalize dari itu. BREACH-style risk tidak sebuah property dari “compression” (terjemahan) “compression” di abstract — original research mendeskripsikan sebuah spesifik attack shape: sebuah respons HTTP itu (1) adalah compressed, (2) mixes sebuah secret (like sebuah CSRF token) dengan (3) attacker-influenced konten reflected ke yang sama respons, di mana (4) attacker dapat observe compressed respons’s length di seluruh repeated permintaan untuk infer secret byte oleh byte. Apache’s mod_deflate documentation flags persis ini combination sebagai worth sebuah BREACH-spesifik review. jika Anda respons jangan combine sebuah secret dengan attacker-controlled reflected input di sebuah compressed body, classic attack tidak apply — perbaiki adalah untuk review dan mitigate spesifik vulnerable respons/context (e.g. jangan reflect pengguna input alongside secrets, tambahkan per-permintaan tokens, atau rate-limit), tidak untuk disable text compression di seluruh seluruh situs.

Evidence for this claim BREACH-style risk is not a reason to disable compression sitewide: the classic attack requires a compressible HTTP response that combines a secret with attacker-influenced reflection and observable repeated length; mitigate the vulnerable response/context with reviewed controls. Scope: security Confidence: high · Verified: BREACH: Reviving the CRIME Attack

sitemap myth — compression adalah explicitly diizinkan

Satu correction worth membuat loudly: ** Sitemaps protocol explicitly memungkinkan gzip-compressed sitemaps.** beberapa folks believe Anda dapat’t atau tidak seharusnya gzip sebuah sitemap file — itu’s wrong. sitemaps.org protocol permits gzipped sitemap files (.xml.gz) untuk reduce bandwidth, keduanya mesin accept them, dan Bing’s own submission tooling mendukung gzip too. satu-satunya caveat adalah biasa satu: uncompressed sitemap harus masih respect protocol’s size limits (50 000 URLs / 50 MB uncompressed). Gzipping file pada wire adalah fine dan encouraged untuk besar sitemaps.

Di mana compression sits di web performa

Compression adalah satu lever among cluster’s siblings. ini shrinks critical bytes critical rendering path memiliki untuk download; ini lowers TTFB dan downstream LCP; ini adalah sebuah named PageSpeed Insights / Lighthouse audit; dan ini pairs dengan caching (encoding vs storage) dan render-blocking resources (lebih kecil blocking files paint sooner). untuk lebih luas toolkit, see web performa alat.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.