Conditional permintaan: ETag, jika-Modified-Since & 304 tidak diubah
Bagaimana conditional permintaan — ETag, Terakhir-Modified, jika-Modified-Since/jika-None-Match, dan 304 tidak diubah respons — let Googlebot skip re-downloading unchanged halaman dan pertahankan anggaran crawling pada besar situs.
Bahasa
1 sinyal bukti di halaman ini
- Alat aktif terkaitHTTP Header Checker
Conditional permintaan adalah bagaimana Googlebot menanyakan 'memiliki ini halaman changed since I terakhir di-crawl ini?' sebelum re-downloading. ini mengirim jika-Modified-Since (diperiksa terhadap Anda Terakhir-Modified header) dan/atau jika-None-Match (diperiksa terhadap Anda ETag); jika tidak ada apa pun changed, Anda server seharusnya kembalikan 304 tidak diubah dengan Tidak body dan crawler reuses -nya existing copy — roughly sebuah kilobyte alih-alih seluruh halaman. Google prefers ETag ketika keduanya adalah present, tidak kirim headers pada setiap crawl, dan sebuah 304 melakukan tidak freeze pengindeksan sinyal. payoff adalah crawl efficiency pada besar situs dengan banyak rarely-mengubah URLs — ini adalah tidak sebuah peringkat factor. situs diam-diam break ini three cara: selalu returning 200 dengan sebuah penuh body, ETags itu perubahan pada setiap permintaan (timestamps, per-permintaan tokens, per-node CDN variance), dan sebuah Terakhir-Modified itu tidak reflect nyata konten perubahan.
Evidence for this claim Conditional requests use validators such as ETag and Last-Modified with If-None-Match or If-Modified-Since. Scope: Current official or standards documentation. Confidence: high · Verified: RFC 9110: Conditional requests Evidence for this claim A 304 response indicates a conditional request can reuse a stored representation and does not include a message body. Scope: Current official or standards documentation. Confidence: high · Verified: RFC 9110: 304 Not ModifiedTL;DR — sebuah conditional permintaan adalah Googlebot asking Anda server “memiliki ini halaman changed since I terakhir grabbed it?” (terjemahan) “memiliki ini halaman changed since I terakhir grabbed ini?” sebelum downloading ini again. jika jawaban adalah Tidak, Anda server mengirim back sebuah tiny
304 Not Modifiedreply dengan Tidak halaman di ini, dan crawler reuses copy ini sudah memiliki. itu saves berfungsi pada keduanya sides — tetapi ini hanya helps di sebuah bermakna cara pada big situs, dan ini tidak membuat Anda peringkat lebih tinggi.
Apa sebuah conditional permintaan adalah
Biasanya, ketika Googlebot ingin sebuah halaman, ini hanya downloads seluruh hal. sebuah conditional permintaan adalah smarter: crawler says “hanya kirim me itu halaman jika ini sebenarnya berbeda dari itu terakhir time I visited.” (terjemahan) “hanya kirim me halaman jika ini adalah sebenarnya berbeda dari terakhir time I visited.”
ini melakukan ini dengan sebuah little extra informasi ini remembers dari sebelumnya crawl:
- sebuah date — “terakhir time I mendapat ini halaman, Anda told me it adalah terakhir modified pada such-dan-such date. Apa pun newer?” (terjemahan) “terakhir time I mendapat ini halaman, Anda told me ini adalah terakhir modified pada such-dan-such date. Apa pun newer?”
- sebuah fingerprint — “terakhir time, Anda gave ini halaman an ID (an
ETag). Adalah itu ID masih itu sama?” (terjemahan) “terakhir time, Anda gave ini halaman sebuah ID (sebuahETag). adalah itu ID masih yang sama?”
jika tidak ada apa pun changed, Anda server replies 304 Not Modified. itu reply memiliki Tidak
halaman attached — ini adalah hanya sebuah pendek message itu berarti “sama sebagai sebelum.” (terjemahan) “sama sebagai sebelum.” Googlebot
lalu reuses copy ini saved terakhir time alih-alih re-downloading semuanya.
jika sesuatu melakukan perubahan, Anda server mengirim penuh halaman back sebagai wajar (sebuah 200 OK), dan crawler takes fresh copy.
Mengapa anyone cares
Think dari sebuah giant online store dengan sebuah million product halaman itu mostly tidak pernah perubahan. Tanpa conditional permintaan, Googlebot re-downloads semua dari them setiap time ini muncul back — sebuah huge amount dari wasted bandwidth dan server berfungsi untuk halaman itu adalah identical untuk terakhir week. dengan conditional permintaan, sebagian besar dari itu visits mendapatkan sebuah tiny “tidak ada apa pun changed” (terjemahan) “tidak ada apa pun changed” reply, dan crawler dapat spend -nya time pada halaman itu melakukan perubahan atau adalah brand baru.
itu’s seluruh benefit: efficiency. ini adalah bagian dari apa called Anda crawl budget — amount dari crawling sebuah mesin pencari adalah willing untuk melakukan pada Anda situs.
honest caveat
Dua hal worth knowing sebelum Anda mendapatkan excited:
- ini mostly penting untuk besar situs. pada sebuah kecil situs, savings adalah tiny
dan biasanya tidak worth setup. sebagai I’ve ditulis sebelum, untuk kecil situs web
caching opportunity sebuah
304menyediakan adalah “tidak itu crucial.” (terjemahan) “tidak itu crucial.” - ini tidak akan meningkatkan Anda rankings. crawling lebih efficiently tidak move Anda up hasil — ini hanya helps big situs mendapatkan mereka baru dan changed halaman di-crawl sebuah bit lebih cepat.
ingin tepat headers, apa Google memiliki sebenarnya mengatakan ini mendukung, three cara situs diam-diam break ini, dan bagaimana ini differs dari laju crawling dan crawl frequency? Switch untuk Advanced tab.
Evidence for this claim Google may send If-Modified-Since or If-None-Match, but a site must not assume every crawler request will contain either conditional header. Scope: official protocol/provider documentation and production verification Confidence: high · Verified: Troubleshoot Google Search crawling errors Evidence for this claim Conditional requests use validators such as ETag and Last-Modified with If-None-Match or If-Modified-Since. Scope: Current official or standards documentation. Confidence: high · Verified: RFC 9110: Conditional requests Evidence for this claim A 304 response indicates a conditional request can reuse a stored representation and does not include a message body. Scope: Current official or standards documentation. Confidence: high · Verified: RFC 9110: 304 Not ModifiedTL;DR — Conditional permintaan let Googlebot validate sebuah cached copy alih-alih re-downloading ini. ini mengirim
If-Modified-Since(validated terhadap AndaLast-Modifiedheader) dan/atauIf-None-Match(validated terhadap AndaETag); jika tidak ada apa pun changed, Anda server mengembalikan304 Not Modifieddengan Tidak body dan crawler reuses -nya copy — roughly ~1 KB vs. 100 KB+ untuk sebuah penuh halaman.ETagwins ketika keduanya adalah present; Google recommendsETag(Tidak date-format pitfalls) tetapi says set keduanya. Google tidak kirim headers pada setiap crawl (gunakan-case dependent — AdsBot adalah likelier untuk), Anda dapat proactively sajikan304bahkan tanpa sebuah conditional header, dan sebuah304melakukan tidak freeze pengindeksan sinyal. Three misconfigurations defeat ini: selalu-200, volatileETags (timestamps, per-permintaan tokens, per-node CDN variance), dan sebuahLast-Modifieditu tidak track nyata perubahan. ini adalah sebuah crawl-efficiency lever untuk besar situs — tidak sebuah peringkat factor, dan distinct dari laju crawling, frequency, dan budget.
mechanism, precisely
Di mana laju crawling adalah bagaimana fast Googlebot fetches dan crawl frequency adalah bagaimana sering ini muncul back, conditional permintaan adalah tentang bagaimana cheaply setiap individual recrawl dapat menjadi answered. mereka’re sebuah validation handshake antara crawler dan Anda server, dibangun pada dua pairs dari header HTTP:
| Anda kirim (respons header) | crawler mengirim back (permintaan header) | Validates oleh |
|---|---|---|
Last-Modified: <date> | If-Modified-Since: <date> | Comparing dates |
ETag: "<fingerprint>" | If-None-Match: "<fingerprint>" | Comparing konten IDs |
flow, langkah oleh langkah:
- pada pertama crawl, Anda server mengembalikan halaman dengan
200 OKplus sebuahLast-Modifieddate dan/atau sebuahETagfingerprint. - pada sebuah kemudian crawl, Googlebot dapat kirim
If-Modified-Since(echoing back date ini terakhir saw) dan/atauIf-None-Match(echoing backETag). - Anda server memeriksa them. jika tidak ada apa pun relevant changed, ini mengembalikan
304 Tidak Modifieddengan Tidak respons body — hanya status dan headers. - Googlebot reuses versi ini di-crawl terakhir time. jika konten melakukan perubahan,
Anda server mengembalikan
200 OKdengan penuh body.
Google documents handshake hampir kata untuk kata: “Google’s crawlers itu dukung caching akan kirim itu ETag value returned untuk a sebelumnya crawl dari itu URL di itu Jika-None-Match header. Jika itu ETag value dikirim oleh itu crawler matches itu saat ini value itu server generated, Anda server seharusnya return an HTTP 304 (Tidak modified) status code dengan Tidak HTTP body.” (terjemahan) “Google’s crawler itu mendukung caching akan kirim ETag nilai dikembalikan untuk sebuah sebelumnya crawl dari itu URL di jika-None-Match header. jika ETag nilai dikirim oleh crawler matches saat ini nilai server generated, Anda server seharusnya kembalikan sebuah HTTP 304 (Tidak modified) kode status dengan Tidak HTTP body.”
Evidence for this claim Google documents heuristic HTTP caching and support for ETag and Last-Modified validators for crawlers that support caching. Scope: official protocol/provider documentation and production verification Confidence: high · Verified: Things to Know about Google web crawlingA crawler revalidates its saved copy by sending If-None-Match with an ETag or If-Modified-Since with a date. The server compares that validator. If the representation is unchanged, it returns 304 Not Modified without a response body and the crawler reuses its saved copy. If the representation changed, the server returns 200 OK with the full updated response body.
© Patrick Stox LLC · CC BY 4.0 ·
ETag vs. Terakhir-Modified — dan mengapa Google prefers ETag
Keduanya validators adalah didukung. Google’s crawling docs state ini plainly: “Google’s crawling infrastructure supports heuristic HTTP caching as defined by the HTTP caching standard, specifically through the ETag response- and If-None-Match request header, and the Last-Modified response- and If-Modified-Since request header.” (terjemahan) “Infrastruktur crawling Google mendukung caching HTTP heuristik sebagaimana ditetapkan oleh standar HTTP, khususnya melalui header respons ETag dan permintaan If-None-Match, serta header respons Last-Modified dan permintaan If-Modified-Since.”
Evidence for this claim Google documents heuristic HTTP caching and support for ETag and Last-Modified validators for crawlers that support caching. Scope: official protocol/provider documentation and production verification Confidence: high · Verified: Things to Know about Google web crawlingKetika keduanya adalah present, ETag wins: “Jika keduanya ETag dan Terakhir-Modified response
header fields adalah present di itu HTTP response, Google’s crawlers gunakan itu ETag value
sebagai wajib oleh itu HTTP standard.” (terjemahan) “jika keduanya ETag dan Terakhir-Modified respons
header fields adalah present di respons HTTP, Google’s crawler gunakan ETag nilai
sebagai diperlukan oleh HTTP standard.” itu’s tidak hanya sebuah Google quirk — ini adalah HTTP
spec, dan ini matches precedence aturan I’ve described di my
Ahrefs glossary entry pada 304 tidak diubah:
ketika keduanya If-None-Match dan If-Modified-Since adalah digunakan, If-None-Match takes
precedence.
Mengapa prefer ETag? Karena ini adalah sebuah opaque string — sebuah fingerprint dari konten —
so ini sidesteps date-parsing traps itu plague Last-Modified. Google’s own
recommendation: “For Google’s crawlers specifically, we recommend using ETag
instead of the Last-Modified header to indicate caching preference as ETag doesn’t
have date formatting issues.” (terjemahan) “untuk Google’s crawler secara khusus, kami merekomendasikan menggunakan ETag
alih-alih Terakhir-Modified header untuk indicate caching preference sebagai ETag tidak
memiliki date formatting issues.” jika Anda melakukan gunakan Last-Modified, date memiliki untuk menjadi
formatted untuk HTTP standard (Weekday, DD Mon YYYY HH:MM:SS Timezone) atau Google
dapat tidak parse ini. dan Google’s practical advice adalah untuk set keduanya anyway jika Anda
dapat — belt dan suspenders.
ada sebuah bonus sinyal too: Cache-Control: max-age. Google says ini adalah tidak diperlukan,
tetapi Anda dapat set ini untuk angka dari seconds Anda expect konten untuk stay unchanged
untuk help crawler decide ketika untuk recrawl. Note asymmetry — Google’s crawling
infrastructure honors max-age sebagai sebuah hint tetapi tidak treat lainnya Cache-Control
directives cara sebuah browser akan.
Apa sebuah 304 melakukan — dan apa ini tidak
payoff adalah dramatic pada wire. sebuah 304 carries Tidak body, so per Gary Illyes’
rough perbandingan ini adalah pada order dari ~1 KB alih-alih 100 KB+ untuk sebuah penuh halaman —
dan ini adalah cheaper untuk generate (Tidak penuh render atau database kueri) dan cheaper untuk
Google untuk proses (Tidak re-parsing, re-rendering, atau re-berjalan seluruh pengindeksan
pipeline pada body).
tetapi menjadi precise tentang apa sebuah 304 melakukan tidak melakukan: ini melakukan tidak freeze Anda peringkat
sinyal. Google’s own status-code guidance notes itu pada sebuah 304 pengindeksan
pipeline “may recalculate signals for the URL,” (terjemahan) “pipeline dapat menghitung ulang sinyal untuk URL tersebut,” bahkan though ini tidak re-fetch
body. sebuah 304 skips download dan re-processing dari konten — tidak setiap
downstream evaluation. So ada Tidak “serve 304s to lock in my rankings” (terjemahan) “sajikan 304s untuk lock di my rankings” trick di sini.
Google tidak selalu tanyakan — dan itu’s wajar
Di sini’s sebuah detail sebagian besar tulis-ups miss: Googlebot tidak kirim conditional headers pada setiap permintaan. dari Google’s crawling-errors doc: “Google generally supports the If-Modified-Since and If-None-Match HTTP request headers for crawling. Google’s crawlers don’t send the headers with all crawl attempts; it depends on the use case of the request (for example, AdsBot is more likely to set the If-Modified-Since and If-None-Match HTTP request headers).” (terjemahan) “Google umumnya mendukung header permintaan HTTP If-Modified-Since dan If-None-Match untuk crawling. Crawler Google tidak mengirim header itu pada semua percobaan crawl; hal ini bergantung pada kasus penggunaan permintaan tersebut (misalnya, AdsBot lebih mungkin menetapkan header If-Modified-Since dan If-None-Match).”
So jika Anda look di Anda logs dan see Googlebot rarely sending If-None-Match, itu
melakukan tidak berarti Anda setup adalah rusak — Google dapat sekadar tidak menjadi asking pada itu
crawl. Google juga notes itu individual crawler dan fetchers dapat atau dapat tidak gunakan
caching depending pada product mereka sajikan.
dan flip side — sebuah genuinely underused implementation detail — Anda dapat sajikan
304 tanpa receiving sebuah conditional header di semua. Google: “Independently of
the request headers, you can send a 304 (Not Modified) HTTP status code and no response body
for any Googlebot request if the content hasn’t changed since Googlebot last visited the URL.
This will save your server processing time and resources, which may indirectly improve crawl
efficiency.” (terjemahan) “Terlepas dari header permintaan, Anda dapat mengirim kode status
HTTP 304 (Tidak diubah) tanpa body respons untuk permintaan Googlebot apa pun jika konten tidak
berubah sejak Googlebot terakhir mengunjungi URL tersebut. Ini menghemat waktu dan sumber daya
pemrosesan server, yang secara tidak langsung dapat meningkatkan efisiensi crawling.” itu’s sebuah advanced
CDN/edge technique — dan sebuah dangerous satu jika Anda mendapatkan ini wrong, karena serving 304
untuk konten itu melakukan perubahan adalah persis “your validators lie” (terjemahan) “Anda validators lie” failure mode.
Treat ini sebagai sebuah edge optimization, tidak sebuah shortcut untuk fake freshness.
Mengapa ini penting untuk anggaran crawling
savings compound hardest pada tepat profile Google’s crawl-budget guidance
sudah flags: besar situs dengan sebuah big share dari rarely-mengubah URLs —
e-commerce catalogs dengan panjang-tail SKUs, news dan publisher archives, big
documentation situs. pada itu situs, sebuah bermakna slice dari anggaran crawling dapat menjadi spent
re-downloading halaman itu adalah byte-untuk-byte identical untuk terakhir crawl. jawaban
itu dengan 304s dan Anda free itu budget untuk baru dan changed halaman alih-alih.
honest, slightly deflating bagian: Google adalah asking untuk lebih adoption di sini, tidak reporting itu everyone sudah melakukan ini. Illyes memiliki noted itu share dari Googlebot’s fetches itu adalah cacheable memiliki sebenarnya fallen di atas terakhir decade — dari sekitar 0,026% untuk tentang 0,017% — bahkan sebagai web memiliki grown. dengan kata lain, ini adalah sebuah underused lever, dan “Crawling December” (terjemahan) “crawling December” post’s own bagian heading adalah sebuah near-literal plea: “Allow us to cache, pretty please.” (terjemahan) “Izinkan us untuk cache, pretty please.” sebagian besar situs sekadar tidak configured untuk ini.
umum misconfigurations itu defeat conditional permintaan
Setting sebuah validator adalah tidak yang sama sebagai benefiting dari satu. Three (well, four) cara situs diam-diam break ini:
1. selalu returning 200 dengan sebuah penuh body
paling umum failure adalah melakukan tidak ada apa pun — server tidak pernah sets validators atau tidak pernah memeriksa them, so setiap crawl adalah sebuah penuh re-download regardless dari apakah apa pun changed. biasanya ini adalah sebuah CMS/server stack dengan Tidak caching layer configured di semua. ini adalah default state Illyes adalah nudging orang out dari.
2. ETags itu perubahan pada setiap single permintaan
ini satu adalah nastier karena ini looks correct. jika Anda ETag adalah computed dari
sesuatu volatile — sebuah embedded timestamp, sebuah per-permintaan atau per-session token, sebuah
permintaan ID, atau sebuah bangun artifact itu bakes di sebuah bangun time — lalu setiap respons
mendapatkan sebuah “new” (terjemahan) “baru” ETag bahkan ketika terlihat konten adalah identical. If-None-Match tidak pernah
matches, so Anda server tidak pernah memiliki grounds untuk kembalikan 304. Perbaiki: derive ETag
dari sebuah hash dari sebenarnya respons body atau sebuah stable konten-versi identifier, tidak
dari apa pun itu varies per permintaan.
3. Per-node CDN/cluster variance
sebuah close cousin: berbeda origin nodes generating berbeda (weak) ETags untuk
identical konten. sebuah CDN atau crawler alternating antara nodes tidak pernah sees sebuah stable
nilai dan mempertahankan re-validating tanpa ever landing sebuah bersih 304. Perbaiki: generate
ETags deterministically dari konten, tidak per-instance state, atau centralize ETag
generation di seluruh fleet.
4. sebuah Terakhir-Modified itu tidak reflect nyata perubahan
jika Anda Last-Modified mendapatkan stamped dengan “now” (terjemahan) “now” pada setiap render, atau bumped oleh sebuah
trivial perubahan like sebuah auto-updating copyright tahun di footer, ini either triggers
pointless penuh re-melakukan crawl ( date selalu looks baru) atau, jika ini adalah stale/gamed, erodes
Google’s trust di sinyal. ini adalah yang sama honesty principle Google applies untuk
sitemap lastmod nilai — hanya gunakan ini jika ini verifiably reflects sebuah significant
perubahan. crawl-frequency artikel covers itu lastmod logic; identical
discipline applies untuk Last-Modified header HTTP.
Illyes edge case: ketika sebuah 304 locks di sebuah rusak halaman
Worth -nya own callout, karena ini adalah genuinely counterintuitive dan hampir tidak seorang pun
covers ini. Illyes memiliki described bagaimana sebuah 304 dapat “backfire spectacularly” (terjemahan) “backfire spectacularly”: sebuah server
bug menyajikan sebuah rusak, empty halaman dengan sebuah 200; crawler memperlakukan ini sebagai sebuah transient
error dan schedules sebuah recrawl untuk verify; masih-rusak halaman lalu correctly reports
304 (“unchanged” (terjemahan) “unchanged”); dan crawler concludes error state adalah durable,
“real” (terjemahan) “nyata” konten dan berhenti rechecking sebagai sering. His numbered walkthrough ends dengan
crawler “learn[ing] itu error adalah persistable.” (terjemahan) “learn[ing] error adalah persistable.” His own caveat: melakukan ini happen? Ya.
sering? Absolutely tidak — “tetapi ini worth mempertahankan ini di suatu tempat deep di Anda mind
karena debugging it adalah an absolute nightmare.” (terjemahan) “tetapi ini adalah worth mempertahankan ini di suatu tempat deep di Anda mind
karena debugging ini adalah sebuah absolute nightmare.” lesson: conditional permintaan dapat
entrench sebuah error jika underlying konten generation adalah rusak, so jangan bolt them
pada di atas sebuah flaky origin.
Bagaimana Bing menangani ini
ini tidak sebuah Google-hanya fitur, dan Bing’s mendukung adalah arguably older dan lebih
jelas. Bing (back ketika ini adalah Langsung Penelusuran) announced RFC-2616-compliant
conditional Mendapatkan di 2008: ini “generally akan tidak download itu halaman unless it memiliki
changed since itu terakhir time it crawled it,” (terjemahan) “umumnya akan tidak download halaman unless ini memiliki
changed since terakhir time ini di-crawl ini,” sending If-Modified-Since dengan time
dari terakhir download dan, ketika tersedia, If-None-Match dengan ETag. Hari ini Bing
folds ini ke sebuah named, trackable metric — crawl efficiency — yang Fabrice
Canel defines sebagai “how often we crawl and discover new and fresh content per page
crawled.” (terjemahan) “seberapa sering kami merayapi dan menemukan konten baru dan segar per
halaman yang dirayapi.” Unnecessary re-melakukan crawl dari unchanged konten secara langsung lebih rendah itu score. So
yang sama validators sajikan keduanya mesin; Bing hanya memberikan concept sebuah scoreboard.
melakukan ini memengaruhi rankings?
Tidak. pertahankan yang sama discipline crawl-rate dan crawl-budget artikel hold untuk:
conditional permintaan adalah sebuah crawl-efficiency dan resource lever, tidak sebuah peringkat
factor. Tidak official sumber ties ETag/If-Modified-Since/304 untuk rankings.
indirect benefit adalah itu besar atau frequently-diperbarui situs dapat mendapatkan baru dan changed
konten di-crawl dan terindeks sooner — tetapi crawling lebih efficiently adalah tidak itself sebuah
sinyal peringkat.
cara verify ini adalah berfungsi
ground truth adalah Anda server logs. cari dua hal: Googlebot sending
If-None-Match/If-Modified-Since permintaan headers, dan Anda server returning 304
respons untuk ini. dunia nyata data adalah thin di sini, yang adalah apa membuat Dave Smart’s
server-log study di Tame bot
valuable: monitoring verified Googlebot traffic, he ditemukan hanya tentang 1,3% dari permintaan
mendapat sebuah 304 — mostly 200s — dan itu If-None-Match permintaan tended untuk cluster
ketika sebuah URL adalah requested again shortly setelah sebuah prior fetch. His conclusion matches
guidance: infrequent pada kecil situs, tetapi potentially “significant savings” (terjemahan) “significant savings” pada
heavily-di-crawl ones. jangan expect sebuah tinggi 304 rate pada sebuah kecil situs; melakukan expect ini untuk
penting di scale.
Conditional permintaan vs. rate vs. frequency vs. budget
untuk pertahankan crawl-budget family straight:
- laju crawling — bagaimana fast Googlebot fetches (supply side, throttled oleh server health).
- crawl frequency — bagaimana sering sebuah known URL adalah re-fetched (popularity + staleness).
- anggaran crawling — demand + capacity envelope: set dari URLs Google dapat dan ingin untuk crawl.
- Conditional permintaan — bagaimana cheaply setiap individual recrawl dapat menjadi answered. mereka jangan perubahan bagaimana fast atau bagaimana sering Google melakukan crawl; mereka membuat setiap unchanged-halaman visit hampir free, yang adalah bagaimana Anda berhenti wasting budget pada identical konten.
AI summary
sebuah condensed take pada Advanced versi:
- Conditional permintaan = “memiliki ini changed?” (terjemahan) “memiliki ini changed?” Googlebot mengirim
If-Modified-Since(validated terhadap AndaLast-Modified) dan/atauIf-None-Match(validated terhadap AndaETag). Unchanged → Anda server mengembalikan304 Not Modifieddengan Tidak body dan crawler reuses -nya copy. - ETag wins ketika keduanya adalah present; Google recommends
ETag(Tidak date-format pitfalls) tetapi says set keduanya.Cache-Control: max-ageadalah sebuah opsional supplementary recrawl-timing hint. - sebuah
304adalah ~1 KB vs. 100 KB+ dan skips re-download/re-processing — tetapi ini melakukan tidak freeze pengindeksan sinyal (Google dapat masih recalculate them). - Google tidak selalu kirim headers (gunakan-case dependent; AdsBot adalah likelier
untuk), dan Anda dapat proactively sajikan
304bahkan tanpa sebuah conditional header. - Three misconfigurations defeat ini: selalu-
200dengan sebuah penuh body; volatileETags (timestamps, per-permintaan tokens, per-node CDN variance); dan sebuahLast-Modifieditu tidak track nyata perubahan (sama honesty aturan sebagai sitemaplastmod). - Edge case: sebuah
304disajikan di atas sebuah rusak/empty halaman dapat membuat Googlebot treat error sebagai permanent (Illyes). - Bing memiliki didukung RFC-compliant conditional Mendapatkan since 2008 dan tracks ini sebagai “crawl efficiency.” (terjemahan) “crawl efficiency.”
- Adoption adalah rendah dan falling (~0,026% → ~0,017% cacheable fetches di atas sebuah decade); ini adalah sebuah underused lever untuk besar situs — dan tidak sebuah peringkat factor.
- Verify di server logs (
304rate,If-None-Matchpresence). nyata data (Tame bot) menampilkan ini adalah rare pada kecil situs, bermakna di scale.
Dokumentasi resmi
Utama-sumber documentation pada conditional permintaan dan crawler caching.
- Hal untuk Know tentang Google’s Web crawling — saat ini HTTP-caching contract:
ETag/If-None-Match,Last-Modified/If-Modified-Since, ETag precedence, danCache-Control: max-agehint. (Note: ini konten moved di sini dari older/search/docs/...path; guidance adalah yang sama.) - crawling December: HTTP caching — Gary Illyes’ Dec 2024 post behind itu doc perbarui (“Allow us to cache, pretty please” (terjemahan) “Izinkan us untuk cache, pretty please”).
- Troubleshoot Google Search crawling errors —
If-Modified-Since/304mechanics, AdsBot contoh, dan “serve a 304 without a conditional header” (terjemahan) “sajikan 304 tanpa sebuah conditional header” allowance. - HTTP kode status, network, dan DNS errors — bagaimana Google memperlakukan sebuah
304(sinyal dapat masih menjadi recalculated; Tidak negative effect pada pengindeksan). - mengoptimalkan Anda anggaran crawling — parent concept dan siapa sebenarnya perlu untuk care.
- bangun dan submit sebuah sitemap —
lastmodhonesty principle itu mirrorsLast-Modifiedheader discipline.
Bing / Microsoft
- Announcing crawler improvements untuk Langsung Penelusuran — Bing’s original 2008 RFC-2616 conditional-Mendapatkan announcement (
If-Modified-Since+If-None-Match/ETag). - bingbot Series: Maximizing crawl Efficiency — Bing’s “crawl efficiency” (terjemahan) “crawl efficiency” metric dan mengapa unchanged re-melakukan crawl lebih rendah ini.
- Bing Webmaster alat — crawl Control — rate-side lever, contrasted dengan conditional permintaan sebagai per-crawl efficiency lever.
Quotes dari sumber
pada—record statements dari Google dan Bing. setiap tautan adalah sebuah deep tautan itu jumps untuk quoted passage pada sumber halaman.
Google — apa didukung, persis
- “Google’s crawling infrastructure supports heuristic HTTP caching as defined by the HTTP caching standard, specifically through the ETag response- and If-None-Match request header, and the Last-Modified response- and If-Modified-Since request header.” (terjemahan) “Infrastruktur crawling Google mendukung caching HTTP heuristik sebagaimana ditetapkan standar caching HTTP, khususnya melalui header respons ETag dan permintaan If-None-Match, serta header respons Last-Modified dan permintaan If-Modified-Since.” — Google, Hal untuk Know tentang Google’s Web crawling. Jump untuk quote
- “If both ETag and Last-Modified response header fields are present in the HTTP response, Google’s crawlers use the ETag value as required by the HTTP standard.” (terjemahan) “Jika field header respons ETag dan Last-Modified sama-sama ada dalam respons HTTP, crawler Google menggunakan nilai ETag sebagaimana diwajibkan oleh standar HTTP.” Jump untuk quote
- “For Google’s crawlers specifically, we recommend using ETag instead of the Last-Modified header to indicate caching preference as ETag doesn’t have date formatting issues.” (terjemahan) “untuk Google’s crawler secara khusus, kami merekomendasikan menggunakan ETag alih-alih Terakhir-Modified header untuk indicate caching preference sebagai ETag tidak memiliki date formatting issues.” Jump untuk quote
- “Google’s crawlers that support caching will send the ETag value returned for a previous crawl of the URL in the If-None-Match header. If the ETag value sent by the crawler matches the current value the server generated, your server should return an HTTP 304 (Not modified) status code with no HTTP body.” (terjemahan) “Crawler Google yang mendukung caching akan mengirim nilai ETag dari crawling URL sebelumnya melalui header If-None-Match. Jika nilai ETag yang dikirim crawler cocok dengan nilai terbaru yang dibuat server, server Anda harus mengembalikan kode status HTTP 304 (Tidak diubah) tanpa body HTTP.” Jump untuk quote
Google — ketika ini mengirim headers, dan proactive-304 allowance
- “Google generally supports the If-Modified-Since and If-None-Match HTTP request headers for crawling. Google’s crawlers don’t send the headers with all crawl attempts; it depends on the use case of the request (for example, AdsBot is more likely to set the If-Modified-Since and If-None-Match HTTP request headers).” (terjemahan) “Google secara umum mendukung header permintaan HTTP If-Modified-Since dan If-None-Match untuk crawling. Crawler Google tidak selalu mengirimkannya; penggunaannya bergantung pada kasus permintaan (misalnya, AdsBot lebih mungkin menetapkan kedua header tersebut).” — Google, Troubleshoot Google Search crawling errors. Jump untuk quote
- “If our crawlers send the If-Modified-Since header, that header’s value is the date and time the content was last crawled. Based on that value, the server may choose to return a 304 (Not Modified) HTTP status code with no response body, in which case Google will reuse the content version it crawled the last time.” (terjemahan) “Jika crawler kami mengirim header If-Modified-Since, nilainya adalah tanggal dan waktu saat konten terakhir dirayapi. Berdasarkan nilai itu, server dapat memilih untuk mengembalikan kode status HTTP 304 (Tidak diubah) tanpa body respons; dalam hal ini Google akan menggunakan kembali versi konten yang terakhir dirayapinya.” Jump untuk quote
- “Independently of the request headers, you can send a 304 (Not Modified) HTTP status code and no response body for any Googlebot request if the content hasn’t changed since Googlebot last visited the URL. This will save your server processing time and resources, which may indirectly improve crawl efficiency.” (terjemahan) “Terlepas dari header permintaan, server dapat mengirim kode status HTTP 304 (Tidak diubah) tanpa body respons untuk permintaan Googlebot ketika konten tidak berubah sejak kunjungan terakhir. Ini menghemat waktu dan sumber daya pemrosesan server, sehingga efisiensi crawling dapat meningkat secara tidak langsung.” Jump untuk quote
Gary Illyes, Google (LinkedIn — 304-backfire failure mode)
- “HTTP 304 (not modified) is super useful to signal crawlers that the content they’re accessing hasn’t changed since it was last crawled, but it can also backfire spectacularly.” (terjemahan) “HTTP 304 (Tidak diubah) sangat berguna untuk memberi tahu crawler bahwa konten yang diaksesnya tidak berubah sejak terakhir dirayapi, tetapi juga dapat menjadi bumerang.” Baca post
- pada bagaimana sering empty-halaman-lalu-304 trap sebenarnya happens: “Does this ever happen? Yes. Often? Absolutely not. But it’s worth keeping this somewhere deep in your mind because debugging it is an absolute nightmare.” (terjemahan) “Apakah ini pernah terjadi? Ya. Sering? Sama sekali tidak. Namun, ingatlah hal ini karena men-debug-nya benar-benar mimpi buruk.” Baca post
Bing (Langsung Penelusuran), Fabrice Canel (2008 conditional-Mendapatkan announcement)
- “Live Search supports conditional get as defined by RFC 2616 (Section 14.25), and generally will not download the page unless it has changed since the last time it crawled it.” (terjemahan) “Langsung Penelusuran mendukung conditional mendapatkan sebagai didefinisikan oleh RFC 2616 (bagian 14,25), dan umumnya akan tidak download halaman unless ini memiliki changed since terakhir time ini di-crawl ini.” Jump untuk quote
about-crawling caching quotes render melalui JavaScript dan resisted direct automated scraping; itu quotes adalah confirmed verbatim melalui multiple independent relays (mesin pencari Land, mesin pencari Journal, mesin pencari Roundtable) dan seharusnya menjadi re-diperiksa terhadap langsung halaman sebelum menjadi treated sebagai akhir. Illyes LinkedIn quotes dan Bing 2008 dan Troubleshoot crawling errors quotes adalah confirmed verbatim terhadap mereka langsung sources. seharusnya I bother implementing conditional permintaan?
Tidak setiap situs perlu ini. berfungsi melalui apakah ini adalah worth Anda time sebelum Anda touch sebuah server config.
Is implementing conditional requests worth it for my site?
SOP: implement conditional permintaan correctly
sebuah repeatable procedure untuk menambahkan (atau memperbaiki) conditional-permintaan mendukung pada sebuah besar situs. melakukan ini di ini order — mengukur, implement, verify.
1. Konfirmasi Anda sebenarnya memiliki masalah.
Pull verified-Googlebot traffic dari Anda server logs. jika sebagian besar permintaan untuk
unchanged URLs kembalikan 200 dengan sebuah penuh body dan sedikit atau Tidak If-None-Match /
If-Modified-Since headers muncul, Anda memiliki room untuk meningkatkan. jika Anda’re sudah
seeing 304s pada unchanged halaman, berhenti — di sana dapat menjadi little untuk gain.
2. Generate sebuah stable, konten-based ETag.
Compute ETag dari sebuah hash dari sebenarnya respons body atau sebuah stable
konten-versi identifier. melakukan tidak derive ini dari sebuah timestamp, sebuah per-permintaan atau
per-session token, sebuah permintaan ID, atau apa pun itu varies per server node. Verify oleh
requesting yang sama unchanged URL twice dan confirming ETag nilai adalah identical
keduanya times (dan identical di seluruh Anda CDN/origin fleet).
3. Set sebuah honest Terakhir-Modified.
Set Last-Modified untuk date/time dari terakhir significant konten perubahan — tidak
saat ini render time, dan tidak sebuah nilai itu moves ketika hanya footer tahun atau sebuah
timestamp perubahan. Format ini untuk HTTP standard
(Weekday, DD Mon YYYY HH:MM:SS Timezone). jika Anda dapat, set keduanya ETag dan
Last-Modified; Google akan prefer ETag.
4. kembalikan 304 correctly.
Ketika sebuah incoming If-None-Match matches Anda saat ini ETag (atau If-Modified-Since
adalah tidak older daripada Anda Last-Modified) dan tidak ada apa pun changed, kembalikan 304 Tidak Modified dengan Tidak respons body — status dan headers hanya. sebagian besar web server dan
kerangka kerja dapat melakukan ini secara otomatis; konfirmasi yours tidak stripped oleh sebuah proxy atau CDN
di front dari origin.
5. (Opsional) tambahkan sebuah Cache-Control max-age hint.
Set Cache-Control: max-age=<seconds> untuk angka dari seconds Anda expect
konten untuk stay unchanged, sebagai sebuah supplementary recrawl-timing sinyal. ini adalah sebuah hint, tidak
sebuah jaminan.
6. Verify di logs — lalu leave ini alone.
Re-periksa logs setelah sebuah sedikit weeks. Anda ingin see Googlebot’s If-None-Match
permintaan met dengan 304s pada unchanged halaman, dan 200s hanya ketika konten genuinely
changed. jangan expect sebuah tinggi 304 rate pada sebuah kecil situs; expect ini untuk penting di scale.
Guardrail: tidak pernah sajikan 304 untuk sebuah halaman itu sebenarnya changed, dan tidak pernah bolt
conditional permintaan onto sebuah flaky origin — sebuah 304 disajikan di atas sebuah rusak/empty halaman
dapat membuat Googlebot treat error sebagai permanent.
Myths dan mistakes untuk hindari
recurring misconceptions itu penyebab wasted effort atau tenang breakage:
-
“Googlebot selalu mengirim Jika-Modified-Since/Jika-None-Match, so jika I jangan see it di my logs my server adalah rusak.” (terjemahan) “Googlebot selalu mengirim jika-Modified-Since/jika-None-Match, so jika I jangan see ini di my logs my server adalah rusak.” salah. Google says explicitly itu ini tidak kirim headers pada setiap crawl — ini adalah gunakan-case dependent, dan main Penelusuran crawler mengirim them inconsistently (AdsBot adalah called out sebagai lebih mungkin untuk). nyata log data (Tame bot) showed well di bawah 2% dari permintaan mendapat sebuah
304pada tested situs. -
“A 304 means Google won’t re-evaluate my rankings/signals.” (terjemahan) “sebuah 304 berarti Google tidak akan re-evaluate my rankings/sinyal.” salah. Google’s own docs note pengindeksan pipeline dapat masih recalculate sinyal untuk URL pada sebuah
304; hanya konten download dan re-processing adalah skipped. -
“Setting an ETag automatically means I’ll get 304s.” (terjemahan) “Setting sebuah ETag secara otomatis berarti I’ll mendapatkan 304s.” salah jika
ETagadalah volatile. sebuahETagdibangun dari sebuah timestamp, sebuah per-permintaan token, atau per-node state perubahan pada setiap permintaan, soIf-None-Matchtidak pernah matches — dan ini adalah harder untuk diagnose karena ini looks correctly configured di sebuah glance. -
“Last-Modified just needs to be present — any date works.” (terjemahan) “Terakhir-Modified hanya perlu untuk menjadi present — apa pun date berfungsi.” salah. jika ini tidak track nyata konten perubahan (stamped dengan “now” (terjemahan) “now” setiap render, atau bumped oleh sebuah footer tweak), ini either triggers wasted re-melakukan crawl atau erodes Google’s trust di sinyal — yang sama principle Google status untuk sitemap
lastmod. -
“304 adalah hanya ever a reactive answer untuk a conditional Mendapatkan.” (terjemahan) “304 adalah hanya ever sebuah reactive jawaban untuk sebuah conditional Mendapatkan.” salah. Google explicitly memungkinkan server untuk proactively kembalikan
304dengan Tidak body untuk apa pun Googlebot permintaan ketika server independently knows konten adalah unchanged. -
“Implementing conditional requests akan boost my rankings.” (terjemahan) “Implementing conditional permintaan akan boost my rankings.” Tidak established oleh apa pun official sumber. terdokumentasi benefit adalah crawl/server efficiency, yang dapat help besar situs mendapatkan baru konten di-crawl lebih cepat — ini adalah tidak sebuah peringkat factor.
-
“Ini hanya matters untuk giant enterprise sites.” (terjemahan) “ini hanya penting untuk giant enterprise situs.” Mostly benar di urgency — Google targets ini di besar, rarely-mengubah-konten situs — tetapi mechanism dan misconfigurations apply untuk apa pun situs. pada sebuah kecil situs ini adalah hanya rarely worth setup.
periksa sebuah URL’s caching validators dengan curl
See apa validators Anda server mengirim, dan apakah ini mengembalikan sebuah 304 ketika Anda echo
them back.
1) See respons headers (cari ETag dan Last-Modified)
curl -sI https://example.com/some-page | grep -iE 'etag|last-modified|cache-control'
# ETag: "a1b2c3d4e5"
# Last-Modified: Thu, 22 Jan 2026 01:28:49 GMT
# Cache-Control: max-age=940432) tanyakan conditionally dengan ETag — Anda ingin sebuah 304 back
curl -sI https://example.com/some-page \
-H 'If-None-Match: "a1b2c3d4e5"'
# HTTP/2 304 ← correct: server confirms nothing changed, sends no body
# HTTP/2 200 ← if you get this on an unchanged page, your validators aren't working3) tanyakan conditionally dengan date alih-alih
curl -sI https://example.com/some-page \
-H 'If-Modified-Since: Thu, 22 Jan 2026 01:28:49 GMT'
# HTTP/2 304Detect sebuah volatile ETag
jika yang sama unchanged URL mengembalikan sebuah berbeda ETag pada back-untuk-back permintaan, Anda
ETag adalah volatile (timestamp/token-based) dan If-None-Match akan tidak pernah match:
# Request twice; the two ETag values should be IDENTICAL for an unchanged page
for i in 1 2; do curl -sI https://example.com/some-page | grep -i '^etag:'; done
# ETag: "a1b2c3d4e5"
# ETag: "a1b2c3d4e5" ← good (stable)
# ETag: "9f8e7d6c5b" ← BAD if different: your ETag changes every requestSpot periksa 304s di Anda access logs
Verify nyata conditional-permintaan activity dari Googlebot. Adjust field positions untuk Anda log format (ini assumes sebuah combined-log-style status field):
# Count status codes returned to Googlebot
grep -i 'googlebot' access.log | awk '{print $9}' | sort | uniq -c | sort -rn
# 4211 200
# 53 304 ← these are the conditional-request wins
# 12 301
# See which URLs are getting 304s
grep -i 'googlebot' access.log | awk '$9==304 {print $7}' | sort | uniq -c | sort -rn | head(Verify permintaan adalah benar-benar Googlebot dengan sebuah reverse + forward DNS periksa sebelum trusting pengguna-agent string — fake Googlebot traffic adalah umum.)
Quick DevTools Console periksa di browser
Paste ke Chrome DevTools Console untuk baca validators browser diterima untuk saat ini halaman:
// Reads the ETag / Last-Modified the server sent for THIS page
fetch(location.href, { method: 'HEAD' }).then(r => {
console.log('ETag:', r.headers.get('etag'));
console.log('Last-Modified:', r.headers.get('last-modified'));
console.log('Cache-Control:', r.headers.get('cache-control'));
}); validator → permintaan → respons kerangka kerja
- Validator: pertama
200respons supplies sebuahETag,Last-Modified, atau keduanya. - permintaan: sebuah kemudian fetch mengirim itu nilai back di
If-None-MatchatauIf-Modified-Since. - respons: unchanged konten mengembalikan
304dengan Tidak body; changed konten mengembalikan200dengan baru body dan validator. - Stability periksa: validators seharusnya perubahan ketika representation konten perubahan, tidak karena sebuah permintaan hit lainnya server atau berisi sebuah timestamp.
Conditional-permintaan header cheat sheet
| Header atau status | Direction | Meaning |
|---|---|---|
ETag | respons | Identifier untuk saat ini representation |
If-None-Match | permintaan | mengembalikan body hanya jika ETag differs |
Last-Modified | respons | server’s modification time untuk representation |
If-Modified-Since | permintaan | mengembalikan body hanya jika ini changed setelah ini time |
304 Not Modified | respons | Reuse cached copy; Tidak respons body |
200 OK | respons | Download saat ini representation dan validators |
alat untuk memeriksa validators
- header HTTP Checker menampilkan
ETag,Last-Modified, cache headers, dan header perubahan di seluruh redirects. - browser DevTools’ Network panel lets Anda inspect awal validators dan conditional headers pada sebuah repeat permintaan.
curladalah clearest reproducible test: capture sebuah validator, kirim ini back, dan konfirmasi unchanged respons adalah304.- Access-log analysis reveals apakah crawler conditional permintaan sebenarnya menerima
304respons di scale.
Metrics untuk conditional-permintaan health
Conditional hit rate
Metric: eligible conditional permintaan returning 304. Apa ini tells Anda: apakah validators hindari unchanged-body transfers. cara pull ini: group access-log permintaan carrying If-None-Match atau If-Modified-Since oleh respons status. Benchmark / realistic range: establish sebuah baseline oleh template dan perubahan cadence; frequently diperbarui halaman seharusnya naturally differ dari stable archives. Cadence: monthly, dan setelah cache/CDN perubahan.
Bytes avoided oleh 304 respons
Metric: estimated respons-body bytes tidak transferred. Apa ini tells Anda: bandwidth benefit alih-alih hanya respons counts. cara pull ini: bandingkan setiap 304 URL dengan latest 200 body size di logs atau sebuah crawl export. Benchmark / realistic range: bandingkan terhadap situs’s own prior period; Tidak universal target adalah honest. Cadence: monthly.
Validator instability
Metric: unchanged URLs milik siapa ETag atau Terakhir-Modified nilai perubahan antara memeriksa. Apa ini tells Anda: apakah per-permintaan atau per-node variance defeats revalidation. cara pull ini: repeat identical header permintaan terhadap sebuah fixed sample. Benchmark / realistic range: validators seharusnya tetap stable sementara representation adalah unchanged. Cadence: setelah deployments, CDN perubahan, atau muat-balancer perubahan.
Resources worth Anda time
My related writing
- Apa adalah 304 tidak diubah? (Ahrefs SEO Glossary) — my walkthrough dari penuh conditional-permintaan flow,
If-None-Match-takes-precedence aturan, dan mengapa304opportunity adalah “tidak itu crucial” (terjemahan) “tidak itu crucial” untuk kecil situs tetapi sebuah “great opportunity” (terjemahan) “great opportunity” untuk besar ones. - Ketika seharusnya Anda Worry tentang anggaran crawling? — parent concept: apa anggaran crawling sebenarnya adalah, demand vs. capacity, dan siapa perlu untuk care sebelum Anda sempit ke conditional permintaan.
- Apa adalah Googlebot & Bagaimana melakukan ini berfungsi? — bagaimana Googlebot decides apa dan bagaimana fast untuk crawl, context sekitar scheduler.
- Beginner’s Guide untuk SEO teknis — di mana crawl efficiency fits di bigger picture.
My speaking
- Bagaimana Penelusuran berfungsi (SlideShare) — my walkthrough dari crawling, rendering, pengindeksan, dan peringkat, including crawl-demand factors itu decide apa mendapatkan re-fetched. (My standing disclaimer applies: “Ini adalah my understanding dari sistem… tidak going untuk menjadi 100% menyelesaikan atau accurate.” (terjemahan) “ini adalah my understanding dari sistem… tidak going untuk menjadi 100% menyelesaikan atau accurate.”)
dari sekitar industry
- crawling December: HTTP caching (Google Search Central) — Gary Illyes’ post asking situs owners untuk enable caching, dan sumber dari declining-adoption stat.
- melakukan Googlebot gunakan Etag Headers? (Dave Smart, Tame bot) — sebuah rare nyata server-log study dari Googlebot’s conditional-permintaan perilaku; sebagian besar competing tulis-ups adalah pure spec paraphrase dengan Tidak observed data.
- Google clarifies bagaimana Google’s crawler tangani cache control headers (Barry Schwartz, mesin pencari Land) — coverage dari Dec 2024 doc perbarui, dengan core
ETag/Last-Modifiedquotes reproduced verbatim. - Google’s Diperbarui crawler Guidance Recommends ETags (Roger Montti, mesin pencari Journal) — mengapa Google prefers
ETag, dan “individual crawlers mungkin atau mungkin tidak gunakan caching” (terjemahan) “individual crawler dapat atau dapat tidak gunakan caching” nuance. - Announcing crawler improvements untuk Langsung Penelusuran (Fabrice Canel, Bing Webmaster Blog) — Bing’s original 2008 RFC-2616 conditional-Mendapatkan announcement, dengan sebuah sample permintaan/respons.
- bingbot Series: Maximizing crawl Efficiency (Bing Webmaster Blog) — Bing’s “crawl efficiency” (terjemahan) “crawl efficiency” framing, di mana unchanged re-melakukan crawl secara langsung lebih rendah metric.
- MDN: HTTP conditional permintaan (Mozilla) — neutral spec-tingkat reference untuk validators dan
304mechanics.
Uji pemahaman Anda: Conditional permintaan
Five quick pertanyaan pada ETag, jika-Modified-Since, dan 304 tidak diubah. Pick sebuah jawaban untuk setiap, lalu periksa.
Log perubahan
Diperbarui 8 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.