Panduan Back/Forward Cache (bfcache)

Apa back/forward cache adalah — browser fitur itu freezes sebuah seluruh halaman di memory untuk instant Back/Forward navigation — bagaimana ini differs dari HTTP cache, apa blocks eligibility, cara test ini, dan -nya nyata (indirect) hubungan untuk Core Web Vitals dan SEO.

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

back/forward cache (bfcache) adalah sebuah browser optimization itu freezes sebuah seluruh halaman — DOM, JavaScript heap, berjalan state — di memory ketika Anda navigate away, so pressing Back atau Forward dapat restore ini instantly dengan Tidak reload, Tidak re-render, dan Tidak network permintaan, sebagai panjang sebagai browser hasn't evicted itu frozen snapshot pertama. ini adalah sebuah browser fitur, tidak sebuah penelusuran peringkat factor: Google's own Core Web Vitals peringkat docs tidak pernah mention ini. -nya SEO relevance adalah indirect dan scoped — sebuah bfcache-restored navigation posts near-instant LCP dan effectively zero CLS untuk pengguna siapa mendapatkan satu, yang dapat meningkatkan Anda aggregate field Core Web Vitals pada apa pun situs dengan bermakna Back/Forward traffic (1 di 10 desktop dan 1 di 5 mobile navigations), tetapi ini tidak jaminan Anda restore rate, Anda overall CWV rating, rankings, atau conversion. single biggest blocker adalah unload event handler; secara historis largest adalah Cache-Control: Tidak-store, though Chrome now memungkinkan bfcache untuk banyak Tidak-store halaman conditionally sebagai dari -nya 2025 rollout. Test dengan Chrome DevTools untuk satu kali lab memeriksa, atau Chrome-hanya notRestoredReasons API untuk data lapangan. jangan confuse bfcache dengan HTTP cache, browser's di-memory resource cache, sebuah service worker's Cache Storage, atau old retired 'cached halaman' penelusuran fitur.

TL;DR — Bfcache adalah snapshot seluruh halaman di memori (DOM + heap JS + state yang berjalan), bukan respons HTTP yang dapat diambil ulang, cache resource dalam memori browser, atau Cache Storage milik service worker — inilah perbedaan konseptual utama. Saat bernavigasi keluar, browser menjeda JS dan membekukan halaman; ketika Back/Forward, jika snapshot yang beku masih tersedia, browser mencairkannya dan menampilkannya lagi secara instan tanpa permintaan jaringan — tetapi penghapusan snapshot selalu mungkin, jadi pemulihan harus dianggap mungkin, bukan pasti. Bfcache bukan faktor peringkat Google Search yang terdokumentasi (dokumentasi Core Web Vitals Search Central tidak pernah menyebutnya); relevansinya tidak langsung dan terbatas pada pengukuran CWV lapangan, terutama LCP dan CLS, pada navigasi yang benar-benar dipulihkan — ini tidak menjamin rasio pemulihan, skor CWV agregat, peringkat, atau konversi. Penghambat kelayakan terbesar adalah handler unload (sekitar 18 poin persentase rasio pemulihan di Chrome); secara historis, penghambat terbesar adalah Cache-Control: no-store (memblokir sekitar 17% navigasi riwayat seluler dan 7% desktop), meskipun Chrome kini mengizinkan banyak halaman no-store menggunakan bfcache secara bersyarat setelah peluncuran 2025. Koneksi terbuka, timer, dan observer harus ditutup atau dijeda pada pagehide/freeze, lalu dibuat ulang pada pageshow/resume; window.opener, kebijakan izin, dan frame juga dapat memblokirnya — periksa alasan per-frame di DevTools atau melalui notRestoredReasons, bukan dengan berasumsi. Uji satu URL dengan Chrome DevTools dan diagnosis di lapangan memakai API notRestoredReasons khusus Chrome (hasil null bukan bukti pemulihan, dan teks alasannya tidak stabil). Setiap browser memiliki aturan kelayakan sendiri, dan navigasi lunak SPA tidak mendapat perlakuan yang sama.

Evidence for this claim The back-forward cache stores a complete page snapshot for instant history navigation. Scope: Current official or standards documentation. Confidence: high · Verified: web.dev: Back/forward cache Evidence for this claim Browser eligibility rules and APIs such as unload handlers can prevent bfcache use. Scope: Current official or standards documentation. Confidence: high · Verified: web.dev: bfcache eligibility

Apa bfcache sebenarnya adalah ( accuracy spine)

single sebagian besar penting hal untuk mendapatkan right: bfcache adalah sebuah seluruh-halaman, di-memory snapshot, tidak sebuah cached respons HTTP. Ketika Anda navigate away dari sebuah halaman, rather daripada tearing ini down, browser pauses JavaScript execution dan freezes entire halaman — DOM, JS heap, di-flight timers, lot — dan holds ini di memory. jika Anda press Back atau Forward sementara itu frozen snapshot adalah masih tersedia, browser un-freezes ini dan re-displays tepat halaman Anda left, dengan zero network permintaan dan zero re-render. itu’s sebuah mungkin restore, tidak sebuah jaminan — browser dapat evict snapshot sebelum Anda navigate back (memory pressure, sebuah timeout, certain events), atau sebuah browser-spesifik aturan dapat force sebuah fresh muat, di yang case ini adalah hanya sebuah ordinary history navigation alih-alih. Google’s canonical framing adalah itu bfcache adalah “a browser optimization that enables instant back and forward navigation.” (terjemahan) “pengoptimalan browser yang memungkinkan navigasi maju dan mundur secara instan.”*

ini adalah mengapa conflating ini dengan HTTP/browser cache adalah recurring pesaing error. HTTP cache stores respons untuk sebelumnya permintaan — files ini dapat re-sajikan. Bfcache stores langsung, berjalan halaman. Chrome’s DevTools documentation draws line explicitly: bfcache “differs from browser cache and HTTP cache.” (terjemahan) “berbeda dari cache browser dan cache HTTP.”* Anda tidak “turn pada” (terjemahan) “turn pada” bfcache dengan caching headers cara Anda configure HTTP caching — satu-satunya place headers enter picture adalah itu Cache-Control: Tidak-store digunakan untuk disqualify sebuah halaman (lebih pada itu di bawah).

yang sama pembedaan holds terhadap dua lainnya caches orang sometimes conflate dengan bfcache: browser’s di-memory resource cache (compiled scripts dan decoded images dipertahankan sekitar untuk saat ini session) dan sebuah service worker’s Cache Storage (jelas permintaan/respons pairs sebuah situs manages itself melalui caches.open()). Keduanya dapat menjadi active pada yang sama halaman pada saat yang sama sebagai bfcache — neither satu adalah bfcache, yang adalah secara khusus frozen halaman instance, tidak cached assets atau intercepted respons.

Satu lebih disambiguation worth stating karena ini masih penyebab confusion: bfcache memiliki tidak ada apa pun untuk melakukan dengan old “cached halaman” (terjemahan) “cached halaman” penelusuran fitur itu Google (dan Bing) setelah exposed di hasil. itu adalah sebuah stored snapshot dari sebuah halaman di penelusuran indeks, dan ini adalah telah retired. Bfcache adalah sebuah client-side, rendering-mesin fitur.

Bagaimana umum adalah Back/Forward navigations, benar-benar?

ini adalah tidak sebuah niche edge case. Per web.dev, “1 di 10 navigations pada desktop dan 1 di 5 pada mobile adalah either back atau forward.” (terjemahan) “1 di 10 navigations pada desktop dan 1 di 5 pada mobile adalah either back atau forward.” pada apa pun situs dengan repeat/back-forward alur — e-commerce category-untuk-product-dan-back, hasil pencarian, paginated konten, artikel-untuk-artikel reading — itu’s sebuah besar slice dari nyata navigations Anda dapat membuat near-instant.

browser mendukung

“All major browsers include a bfcache, including Chrome since version 96, Firefox dan Safari.” (terjemahan) “semua major browser sertakan sebuah bfcache, including Chrome since versi 96, Firefox dan Safari.” Firefox dan Safari memiliki implementasi bfcache yang sudah berjalan lebih lama, implementations; semua Chromium-based browser (Edge, Brave, Opera, Arc) inherit Chrome’s. Microsoft’s Edge policy documentation mendeskripsikan yang sama fitur: ketika navigating away dari sebuah halaman, -nya saat ini state (document tree, script, dan so pada) dapat menjadi dipertahankan di back-forward cache, dan jika browser navigates back halaman dapat menjadi restored dari ini dan displayed di state ini adalah di sebelum menjadi cached. ini adalah enabled oleh default di Edge; satu-satunya off switch adalah sebuah enterprise policy sebuah ini admin controls, tidak sebuah situs owner.

penting caveat: setiap browser’s bfcache applies -nya own eligibility aturan. sebuah halaman itu melewati Chrome DevTools’ “Test back/forward cache” (terjemahan) “Test back/forward cache” adalah tidak guaranteed untuk menjadi eligible di Firefox atau Safari. Treat sebuah Chrome lulus sebagai necessary, tidak sufficient.

Apa blocks bfcache eligibility

unload event — single biggest blocker

jika Anda take satu hal dari ini artikel: berhenti menggunakan unload event. web.dev puts ini dengan rare emphasis untuk sebuah Google doc: “Never use the unload event. Ever!” (terjemahan) “Jangan pernah gunakan event unload. Sama sekali!”* pada Chrome, unload handlers cost roughly sebuah 18-percentage-poin reduction di bfcache hit rate — oleh far largest self-inflicted disqualifier.

ada dua alasan Chrome adalah actively deprecating ini. pertama, ini adalah biggest bfcache blocker. kedua, unload adalah extremely unreliable untuk begin dengan: pada mobile ini frequently tidak fire di semua, karena tabs mendapatkan backgrounded dan killed dan browser prioritizes bfcache di atas firing unload. So event Anda’re relying pada untuk “cleanup” (terjemahan) “cleanup” sering tidak pernah berjalan dan ini adalah blocking sebuah nyata performa win.

memperbaiki:

  • Replace unload dengan pagehide. pagehide event fires di setiap case unload melakukan, plus ketika sebuah halaman enters bfcache — so ini adalah sebuah strict upgrade. gunakan visibilitychange untuk reliable “user adalah leaving” (terjemahan) “pengguna adalah leaving” cleanup.
  • Detect sebuah bfcache restore dengan pageshow. Listen untuk pageshow dan periksa event.persisted — jika ini adalah true, halaman adalah restored dari bfcache, yang adalah Anda cue untuk refresh stale data atau re-count sebuah pageview.
  • Proactively block unload listeners dengan Permissions-Policy: unload=() respons header, yang mencegah apa pun unload handlers dari menjadi registered di semua. Chrome adalah secara bertahap migrating default policy toward deny (sebuah Permissions-Policy untuk unload shipped dari Chrome 115).

Cache-Control: no-store — secara historis largest, now nuanced

ini adalah freshness poin sebagian besar pesaing konten mendapatkan wrong. Secara historis, Cache-Control: no-store adalah largest single alasan halaman adalah excluded dari bfcache — Chrome’s own figures put ini di roughly 17% dari history navigations pada mobile dan 7% pada desktop. banyak situs set no-store defensively untuk hindari serving sebuah stale halaman, tetapi Google’s argument adalah itu ini rationale weakens di bawah bfcache: sebuah bfcache restore tidak memuat sebuah stale cached respons, ini adalah re-displaying tepat langsung halaman hampir sebagai jika tab memiliki telah left open.

So Chrome changed perilaku — tetapi conditionally, tidak universally. Experiments began di Chrome 116, dengan akhir rollout untuk 100% dari pengguna di atas March dan April 2025: Chrome now memungkinkan bfcache untuk banyak no-store halaman, subject untuk spesifik safety conditions alih-alih sebuah blanket exception. Per Chrome’s own docs, ini muncul dengan nyata constraints — halaman adalah evicted dari bfcache jika authentication state atau cookies perubahan sementara ini adalah frozen (so sebuah signed-out atau cookie-cleared pengunjung tidak akan see sebuah stale signed-di snapshot), dan sebuah fixed list dari APIs — yang sama open-connection APIs covered di bawah (IndexedDB, WebSocket, WebRTC, dan rest) — masih exclude sebuah no-store halaman dari bfcache yang sama cara mereka akan apa pun lainnya halaman. ini adalah Chrome-spesifik perilaku pada sebuah spesifik versi range, tidak sebuah aturan Anda dapat assume lainnya browser, atau older Chrome versi, ikuti — pull saat ini DevTools/notRestoredReasons report untuk browser dan versi Anda’re sebenarnya testing alih-alih trusting sebuah fixed aturan dari thumb. ** practical takeaway:** apa pun guide (including older versi dari ini satu) itu lists no-store sebagai sebuah unconditional, permanent bfcache blocker adalah stale — dan so adalah treating ini sebagai fully solved. jika freshness genuinely penting untuk sebuah halaman, Chrome’s docs suggest no-cache atau sebuah pendek max-age (e.g. max-age=60) rather daripada no-store.

Open connections, observers, dan lainnya blockers

di moment dari navigation, certain open resources dapat masih block eligibility — dan persis yang ones, dan apakah mereka block outright atau hanya mendapatkan closed-dan-reconnectable, adalah browser- dan versi-spesifik. Treat list di bawah sebagai contoh dari sebuah pattern, tidak sebuah fixed, permanent blocker list:

  • di-progress fetch() / XMLHttpRequest permintaan.
  • Open IndexedDB transactions.
  • Open WebSocket / WebRTC connections, timers, dan observers (MutationObserver, IntersectionObserver, dan similar). ini adalah sebuah actively improving area — recent Microsoft Edge rilis notes tampilkan sebuah open WebSocket now menjadi closed ketika sebuah halaman enters bfcache (alih-alih blocking caching outright), dengan reconnection recommended melalui pageshow event’s event.persisted periksa. itu mirrors Chrome’s lebih luas trend dari reducing blockers alih-alih hanya excluding halaman.

umum pattern untuk bangun untuk, alih-alih memorizing sebuah fixed list: close atau pause open connections, timers, dan observers di Anda pagehide/freeze menangani, dan re-establish them di Anda pageshow/resume menangani ketika event.persisted adalah benar. itu pattern survives sebuah browser mengubah persis yang APIs block eligibility outright versus yang ones ini now hanya suspends dan lets Anda reconnect.

window.opener, permissions policies, dan frames. sebuah window.opener reference, certain permissions policies, dan embedded (sama- atau cross-origin) iframes dapat juga memengaruhi eligibility — ini adalah pada checklist I distilled di Ahrefs’ CLS guide dan di Chrome’s docs. tetapi jangan assume yang satu adalah sebenarnya penyebab dari sebuah generic checklist: Chrome’s DevTools panel dan notRestoredReasons API keduanya report blocking alasan per frame — top frame dan setiap iframe secara terpisah — karena frame sebenarnya responsible untuk sebuah block tidak selalu top-tingkat halaman. Pull nyata alasan dari itu frame-tingkat report untuk browser Anda’re testing alih-alih guessing dari sebuah umum list.

Getting lifecycle event/state sequence right

Mixing up apa setiap lifecycle event sebenarnya proves versus merely suggests adalah kedua sebagian besar umum correctness bug di sini, setelah eligibility mistakes di atas:

Event / stateSinyalApa ini sebenarnya berartiApa untuk melakukan
pagehide (event.persisted === true)Intent untuk cachebrowser adalah attempting untuk freeze halaman untuk bfcache — tidak sebuah confirmed cache entryClose/pause connections, timers, dan observers di sini; jangan assume halaman akan sebenarnya menjadi restored
freezePausedJS execution adalah paused; halaman dapat masih menjadi evicted sebelum apa pun restoreTidak tindakan beyond apa Anda sudah melakukan di pagehide
(Tidak event) mungkin evictionbrowser dapat drop sebuah frozen halaman dari memory di apa pun poin — memory pressure, sebuah timeout, sebuah browser aturan — dan ada Tidak event itu fires untuk inijangan rely pada cleanup code berjalan kemudian; melakukan ini unconditionally di pagehide/freeze
pageshow (event.persisted === true)Confirmed restoresatu-satunya reliable sinyal itu sebuah bfcache restore sebenarnya happenedRefresh time-sensitive/sensitive state, reconnect closed connections, count persis satu analytics view
resumeResumedJS execution adalah unpaused setelah sebuah confirmed restoreReconnect apa pun paused di freeze

practical aturan: treat pagehide.persisted sebagai intent, tidak proof — halaman mungkin masih mendapatkan evicted sebelum Anda’d ever see sebuah restore. hanya pageshow.persisted === true adalah evidence sebuah restore happened. melakukan Anda cleanup unconditionally di pagehide/freeze (ini adalah cheap dan safe bahkan pada sebuah ordinary navigation), dan melakukan Anda restore-spesifik berfungsi hanya di pageshow/resume, gated pada event.persisted, so Anda tidak refresh data atau double-count sebuah analytics view pada sebuah plain fresh muat.

cara test dan diagnose bfcache

Lab / satu kali: Chrome DevTools

Open DevTools → Application → Background services → Back/forward cache, lalu click “Test back/forward cache.” (terjemahan) “Test back/forward cache.” Chrome auto-navigates untuk chrome://terms/ dan back, lalu reports either success atau sebuah spesifik list dari blocking alasan. baik untuk memeriksa satu URL di sebuah time.

Field / production: notRestoredReasons API

Previously satu-satunya cara untuk periksa eligibility adalah itu manual, satu-URL-di-sebuah-time DevTools test — di sana adalah Tidak cara untuk see mengapa pengguna nyata’ navigations adalah blocked. notRestoredReasons property pada PerformanceNavigationTiming (shipped di Chrome 123+) closes itu kesenjangan: ini reports spesifik blocking alasan(s) untuk top frame dan sama-origin iframes di nyata data lapangan.

const nav = performance.getEntriesByType('navigation')[0];
console.log(nav.notRestoredReasons);

sebuah sedikit hal untuk mendapatkan right ketika Anda gunakan ini, straight dari Chrome’s own API guidance:

  • ini adalah Chrome-hanya (123+). Firefox dan Safari jangan expose sebuah equivalent field API, so Anda masih perlu manual spot-memeriksa di itu browser untuk know Anda restore rate di sana.
  • sebuah null hasil adalah ambiguous, tidak sebuah green light. ini dapat berarti halaman adalah restored, atau ini dapat berarti browser sekadar tidak collect sebuah alasan — Chrome’s own docs say tidak untuk treat null sebagai proof dari sebuah successful restore.
  • alasan text tidak sebuah stable contract. jangan hard-code string matches terhadap ini; group dan trend oleh alasan alih-alih, since tepat wording dapat perubahan di seluruh Chrome versi.

Practically: pull notRestoredReasons alongside pageshow.persisted restore rates sebelum dan setelah sebuah perbaiki ships, bandingkan trend alih-alih sebuah single snapshot, dan pair ini dengan sebuah manual DevTools/lab lulus di Firefox dan Safari untuk browser API dapat’t reach. ini adalah alat untuk reach untuk ketika diagnosing bfcache di scale di RUM/production, alih-alih memeriksa URLs satu oleh satu — hanya jangan treat ini sebagai seluruh picture.

Bfcache dan Core Web Vitals — precise hubungan

Di sini’s nuance sebagian besar pesaing konten blurs, dan angle worth owning.

Bagaimana sebuah bfcache restore adalah diukur. browser (dan karena itu CrUX data lapangan) count sebuah bfcache-restored navigation sebagai sebuah extremely fast “halaman load” (terjemahan) “pemuatan halaman” — near-instant LCP dan, ketika halaman adalah implemented correctly (tidak ada apa pun memiliki untuk re-lay-out), effectively zero additional CLS, karena ada Tidak re-render. di DebugBear’s dunia nyata perbandingan, sebuah bfcache-restored halaman hit LCP sekitar 100ms versus ~427ms untuk sebuah uncached muat. ini adalah persis mengapa bfcache menampilkan up sebagai sebuah lever pada CLS dan LCP di my own Ahrefs CLS checklist, di mana I put ini sekadar: “Membuat sure Anda halaman adalah eligible untuk bfcache. Itu back/forward cache menjaga halaman di itu browser cache. It memungkinkan untuk instant loading dari a halaman itu adalah sudah loaded, meaning Tidak layout shifts akan happen.” (terjemahan) “pastikan Anda halaman adalah eligible untuk bfcache. back/forward cache mempertahankan halaman di browser cache. ini memungkinkan untuk instant memuat dari sebuah halaman itu adalah sudah dimuat, meaning Tidak layout shifts akan happen.”

Dua cakupan caveats worth menjadi precise tentang, since ini adalah di mana pesaing konten tends untuk overclaim. pertama, ini hanya memengaruhi navigations CrUX classifies sebagai back/forward (-nya navigation-type dimension) — ini says tidak ada apa pun tentang Anda pertama-visit atau reload navigations, yang adalah majority dari traffic pada sebagian besar situs. kedua, sebuah restore improving diukur experience untuk pengguna siapa mendapatkan satu adalah tidak yang sama sebagai sebuah jaminan: sebuah pengguna siapa’s evicted dari bfcache (see lifecycle table di atas) masih mendapatkan sebuah wajar, unimproved muat, so bfcache eligibility berfungsi moves Anda restore rate among Back/Forward navigations, tidak sebuah fixed share dari Anda total traffic — dan ini tidak jaminan Anda aggregate field Core Web Vitals rating, Anda rankings, atau Anda conversion rate. ini adalah sebuah nyata, measurable lever dengan sebuah spesifik, bounded cakupan, tidak sebuah umum performa atau SEO perbaiki.

adalah bfcache sebuah peringkat factor? Tidak. ini adalah defensible, differentiated claim. Google’s own Core Web Vitals peringkat documentation melakukan tidak mention bfcache di semua. honest chain dari influence adalah: bfcache eligibility → better field CWV angka (mainly LCP/CLS) pada back/forward navigations → Core Web Vitals adalah satu input among banyak “halaman experience” (terjemahan) “pengalaman halaman” sinyal Google says align dengan apa -nya peringkat sistem sudah reward. itu’s sebuah materially weaker, lebih precise claim daripada “bfcache boosts rankings” (terjemahan) “bfcache boosts rankings” — dan ini adalah claim pesaing konten seharusnya menjadi membuat tetapi biasanya tidak careful tentang. Bfcache adalah juga, correctly, sebuah rendering-mesin fitur, tidak sebuah crawler fitur — ini memiliki tidak ada apa pun untuk melakukan dengan bagaimana Googlebot atau Bingbot crawl Anda halaman, yang adalah mengapa ada Tidak “Bing’s take pada bfcache untuk SEO” (terjemahan) “Bing’s take pada bfcache untuk SEO” cara ada untuk robots.txt atau sitemaps.

SPAs dan soft navigations. Bfcache operates pada nyata browser navigation dan history events. sebuah single-halaman app’s client-side “soft” (terjemahan) “soft” route perubahan (sebuah JS-driven view tukar itu tidak trigger sebuah sebenarnya browser navigation) adalah tidak sebuah bfcache event dan tidak mendapatkan yang sama treatment. beberapa RUM alat’ attempts untuk attribute Core Web Vitals untuk soft navigations dapat buat CrUX-vs-RUM pengukuran mismatches — worth sebuah callout jika Anda’re auditing sebuah JS-kerangka kerja situs.

Bagaimana umum adalah bfcache blockers di wild?

HTTP Archive Web Almanac tracks ini, dan ini adalah sebuah langsung, moving area — tidak settled old news. Back di 2022 edition, setidaknya ~22% dari mobile halaman adalah ineligible untuk bfcache pada unload dan no-store criteria alone. Since lalu, unload handler usage memiliki telah declining di seluruh situs tiers dan devices — tetapi Cache-Control: no-store usage memiliki risen ( 2025 chapter puts ini sekitar 23% dari situs, up dari ~21% di 2024, attributed partly untuk lebih authenticated/personalized experiences dan stricter compliance requirements).

counter-intuitive finding worth citing: lebih besar, lebih tinggi-traffic situs adalah disproportionately lebih mungkin untuk block mereka own bfcache. pada top 1 000 situs, sekitar 28% dari desktop halaman dan 20% dari mobile halaman masih gunakan unload handlers, versus hanya ~11% desktop / ~10% mobile di seluruh semua situs — sering karena bigger situs carry lebih legacy analytics dan unload-dependent code. situs dengan paling back/forward traffic untuk lose adalah frequently ones masih getting di mereka own cara.

Di mana ini sits

Bfcache adalah satu performa lever among several di ini cluster. -nya payoff menampilkan up di Core Web Vitals data lapangan — secara khusus di Cumulative Layout Shift dan Largest Contentful Paint, since sebuah restored halaman re-displays instantly dengan Tidak re-layout. ini adalah distinct dari caching, yang stores files alih-alih sebuah langsung halaman snapshot, bahkan though dua share Cache-Control header sebagai sebuah touchpoint. ada Tidak direct tie untuk Interaction untuk Berikutnya Paint, so I tidak akan force satu.

Add an expert note

Pin an expert quote

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