Pamięć podręczna wstecz/do przodu (bfcache)

Czym jest pamięć podręczna wstecz/do przodu — funkcja przeglądarki, która zamraża całą stronę w pamięci, aby umożliwić natychmiastową nawigację wstecz/do przodu — czym różni się od pamięci podręcznej HTTP, co blokuje kwalifikowalność, jak ją testować oraz jaki jest jej rzeczywisty (pośredni) związek z Core Web Vitals i SEO.

Opublikowano po raz pierwszy: 3 lip 2026 · Ostatnia aktualizacja: 8 sie 2026 · Advanced
Języki

Pamięć podręczna wstecz/do przodu (bfcache) to optymalizacja przeglądarki, która zamraża całą stronę — DOM, stertę JavaScript, stan działania — w pamięci, gdy nawigujesz gdzie indziej, dzięki czemu naciśnięcie Wstecz lub Do przodu może przywrócić ją natychmiast, bez przeładowania, bez ponownego renderowania i bez żądań sieciowych, o ile przeglądarka nie usunęła wcześniej tej zamrożonej migawki. To funkcja przeglądarki, a nie czynnik rankingowy: własne dokumenty Google dotyczące rankingu Core Web Vitals nigdy o niej nie wspominają. Jej znaczenie dla SEO jest pośrednie i ograniczone — nawigacja przywrócona z bfcache generuje niemal natychmiastowy LCP i praktycznie zerowy CLS dla użytkowników, którzy ją otrzymują, co może poprawić zagregowane wskaźniki Core Web Vitals na każdej stronie ze znaczącym ruchem Wstecz/Do przodu (1 na 10 nawigacji na komputerach i 1 na 5 na urządzeniach mobilnych), ale nie gwarantuje wskaźnika przywracania, ogólnej oceny CWV, pozycji ani konwersji. Największym pojedynczym blokerem jest procedura obsługi zdarzenia unload; historycznie największym był Cache-Control: no-store, chociaż Chrome od 2025 roku warunkowo zezwala na bfcache dla wielu stron z no-store. Testuj za pomocą Chrome DevTools do jednorazowych testów laboratoryjnych lub API notRestoredReasons (tylko Chrome) do danych terenowych. Nie myl bfcache z pamięcią podręczną HTTP, pamięcią podręczną zasobów przeglądarki, pamięcią Cache Storage service workera ani ze starą, wycofaną funkcją „zapisanej strony” w wyszukiwarce.

TL;DR — Bfcache to migawka całej strony przechowywana w pamięci (DOM + sterta JS + bieżący stan), a nie ponownie pobieralna odpowiedź HTTP, pamięciowa pamięć podręczna przeglądarki lub Cache Storage serwera service worker — to najważniejsze rozróżnienie koncepcyjne, które należy zrozumieć. Podczas nawigacji wstecz przeglądarka wstrzymuje JS i zamraża stronę; przy przycisku Wstecz/Dalej, jeśli ta zamrożona migawka jest nadal dostępna, rozmraża ją i natychmiast wyświetla ponownie bez żadnych żądań sieciowych — ale usunięcie z pamięci jest zawsze możliwe, więc traktuj przywrócenie jako prawdopodobne, a nie gwarantowane. To nie jest udokumentowany czynnik rankingowy Google Search (dokumentacja Search Central dotycząca Core Web Vitals nigdy go nie wspomina); jego znaczenie jest pośrednie i ograniczone, poprzez pomiar CWV w terenie (głównie LCP i CLS) w nawigacjach, które faktycznie zostają przywrócone — nie gwarantuje to Twojego wskaźnika przywracania, ogólnej oceny CWV, pozycji w wynikach wyszukiwania ani konwersji. Największą przeszkodą w kwalifikowalności jest procedura obsługi unload (~18 punktów procentowych wskaźnika trafień w Chrome); historycznie największą była Cache-Control: no-store (blokująca ~17% nawigacji mobilnych / ~7% nawigacji historii na komputerze), chociaż Chrome pozwala teraz na bfcache dla wielu stron no-store warunkowo (usuwane przy zmianie uwierzytelnienia/ciasteczek, nadal blokowane przez te same API otwartych połączeń) po swoim wdrożeniu w 2025 r. Otwarte połączenia, timery i obserwatory powinny być zamykane/wstrzymywane przy pagehide/freeze i ponownie ustanawiane przy pageshow/resume; window.opener, polityki uprawnień i ramki mogą również blokować — sprawdź powód per-ramka w DevTools lub notRestoredReasons, zamiast zakładać. Przetestuj jednorazowo w Chrome DevTools; diagnozuj w terenie za pomocą API notRestoredReasons dostępnego tylko w Chrome (wynik null nie jest dowodem przywrócenia, a tekst powodu nie jest stabilny). Każda przeglądarka ma własne zasady kwalifikowalności, a miękkie nawigacje w SPA nie otrzymują takiego samego traktowania.

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

Czym naprawdę jest bfcache (kręgosłup dokładności)

Najważniejsza rzecz do zrozumienia: bfcache to migawka całej strony przechowywana w pamięci, a nie buforowana odpowiedź HTTP. Gdy nawigujesz wstecz ze strony, zamiast ją niszczyć, przeglądarka wstrzymuje wykonywanie JavaScript i zamraża całą stronę — DOM, stertę JS, aktywne timery, wszystko — i trzyma ją w pamięci. Jeśli naciśniesz Wstecz lub Dalej, gdy ta zamrożona migawka jest nadal dostępna, przeglądarka ją rozmraża i ponownie wyświetla dokładnie tę stronę, którą opuściłeś, z zerową liczbą żądań sieciowych i zerowym ponownym renderowaniem. To możliwe przywrócenie, a nie gwarancja — przeglądarka może usunąć migawkę przed powrotem (presja pamięci, limit czasu, pewne zdarzenia) lub specyficzna dla przeglądarki reguła może wymusić świeże ładowanie, w którym to przypadku jest to po prostu zwykła nawigacja w historii. Kanoniczne ujęcie Google jest takie, że bfcache to “a browser optimization that enables instant back and forward navigation.” (tłumaczenie) „optymalizacja przeglądarki, która umożliwia natychmiastową nawigację wstecz i do przodu”.

Dlatego mylenie go z pamięcią podręczną HTTP/przeglądarki to powtarzający się błąd konkurencji. Pamięć podręczna HTTP przechowuje odpowiedzi na poprzednie żądania — pliki, które może ponownie serwować. Bfcache przechowuje żywą, działającą stronę. Dokumentacja Chrome DevTools wyraźnie to rozgranicza: bfcache “differs from browser cache and HTTP cache.” (tłumaczenie) „różni się od pamięci podręcznej przeglądarki i pamięci podręcznej HTTP”. Nie “włączasz” bfcache nagłówkami buforowania tak, jak konfigurujesz buforowanie HTTP — jedyne miejsce, w którym nagłówki wchodzą w grę, to to, że Cache-Control: no-store dyskwalifikowało stronę (więcej o tym poniżej).

To samo rozróżnienie dotyczy dwóch innych pamięci podręcznych, które ludzie czasami mylą z bfcache: pamięciowej pamięci podręcznej zasobów przeglądarki (skompilowane skrypty i zdekodowane obrazy przechowywane na bieżącą sesję) oraz Cache Storage serwera service worker (jawne pary żądanie/odpowiedź, które witryna zarządza sama przez caches.open()). Obie mogą być aktywne na tej samej stronie w tym samym czasie co bfcache — żadna z nich nie jest bfcache, które jest konkretnie zamrożoną instancją strony, a nie buforowanymi zasobami ani przechwyconymi odpowiedziami.

Jeszcze jedno rozróżnienie warto podać, bo wciąż powoduje zamieszanie: bfcache nie ma nic wspólnego ze starą funkcją „cached page” w wyszukiwarce, którą Google (i Bing) kiedyś pokazywały w wynikach. To był zapisany zrzut strony w indeksie wyszukiwarki i został wycofany. Bfcache to funkcja po stronie klienta, w silniku renderującym.

Jak częste są nawigacje wstecz/do przodu?

To nie jest niszowy przypadek brzegowy. Według web.dev, “1 in 10 navigations on desktop and 1 in 5 on mobile are either back or forward.” (tłumaczenie) „1 na 10 nawigacji na desktopie i 1 na 5 na mobile to nawigacje wstecz lub do przodu”. Na każdej stronie z powtarzającymi się przepływami wstecz/do przodu — e-commerce kategoria-produkt-i-z powrotem, wyniki wyszukiwania, paginowane treści, czytanie artykuł-po-artykule — to duża część realnych nawigacji, które możesz uczynić niemal natychmiastowymi.

Wsparcie przeglądarek

“All major browsers include a bfcache, including Chrome since version 96, Firefox and Safari.” (tłumaczenie) „Wszystkie główne przeglądarki mają bfcache, w tym Chrome od wersji 96, Firefox i Safari”. Firefox i Safari mają własne, dłużej działające implementacje bfcache; wszystkie przeglądarki oparte na Chromium (Edge, Brave, Opera, Arc) dziedziczą rozwiązanie Chrome. Dokumentacja polityki Microsoft Edge opisuje tę samą funkcję: gdy opuszczasz stronę, jej bieżący stan (drzewo dokumentu, skrypty itd.) może zostać zachowany w pamięci podręcznej wstecz/do przodu, a jeśli przeglądarka wróci do strony, może ją z niej przywrócić i wyświetlić w stanie sprzed zapisania. Jest domyślnie włączona w Edge; jedynym wyłącznikiem jest polityka firmowa kontrolowana przez administratora IT, a nie właściciela strony.

Ważne zastrzeżenie: bfcache każdej przeglądarki stosuje własne zasady kwalifikowalności. Strona, która przechodzi test „Test back/forward cache” w Chrome DevTools, nie jest gwarantowana jako kwalifikowalna w Firefox lub Safari. Traktuj pozytywny wynik w Chrome jako warunek konieczny, ale nie wystarczający.

Co blokuje kwalifikowalność bfcache

Zdarzenie unload — największy pojedynczy bloker

Jeśli zapamiętasz jedną rzecz z tego artykułu: przestań używać zdarzenia unload. web.dev podkreśla to z rzadkim naciskiem jak na dokument Google: “Never use the unload event. Ever!” (tłumaczenie) „Nigdy nie używaj zdarzenia unload. Nigdy!” W Chrome obsługa unload kosztuje około 18 punktów procentowych spadku współczynnika trafień bfcache — to zdecydowanie największy samookaleczający dyskwalifikator.

Są dwa powody, dla których Chrome aktywnie wycofuje to zdarzenie. Po pierwsze, to największy bloker bfcache. Po drugie, unload jest z natury bardzo zawodne: na mobile często w ogóle nie odpala, bo karty są zamykane w tle i zabijane, a przeglądarka priorytetyzuje bfcache nad odpalaniem unload. Więc zdarzenie, na którym polegasz przy „sprzątaniu”, często nigdy nie działa i blokuje realną poprawę wydajności.

Rozwiązania:

  • Zastąp unload zdarzeniem pagehide. Zdarzenie pagehide odpala w każdym przypadku, w którym odpala unload, plus gdy strona trafia do bfcache — więc to czyste ulepszenie. Użyj visibilitychange do niezawodnego sprzątania przy „użytkownik opuszcza stronę”.
  • Wykrywaj przywrócenie z bfcache za pomocą pageshow. Nasłuchuj pageshow i sprawdzaj event.persisted — jeśli jest true, strona została przywrócona z bfcache, co jest sygnałem do odświeżenia nieaktualnych danych lub ponownego zliczenia odsłony.
  • Proaktywnie blokuj nasłuchiwacze unload nagłówkiem odpowiedzi Permissions-Policy: unload=(), który zapobiega rejestrowaniu jakichkolwiek obsług unload. Chrome stopniowo migruje domyślną politykę w kierunku odmowy (a Permissions-Policy dla unload pojawiła się w Chrome 115).

Cache-Control: no-store — historycznie największy, teraz bardziej zniuansowany

To jest punkt o świeżości, który większość konkurencyjnych treści podaje błędnie. Historycznie, Cache-Control: no-store był najczęstszą pojedynczą przyczyną wykluczania stron z bfcache — dane Chrome szacują to na około 17% nawigacji historycznych na mobile i 7% na desktopie. Wiele stron ustawia no-store defensywnie, aby uniknąć dostarczania nieaktualnej strony, ale argument Google jest taki, że to uzasadnienie słabnie przy bfcache: przywrócenie z bfcache nie polega na ładowaniu nieaktualnej odpowiedzi z pamięci podręcznej, lecz na ponownym wyświetleniu dokładnie tej samej żywej strony, prawie tak, jakby karta pozostała otwarta.

Tak więc Chrome zmienił zachowanie — ale warunkowo, nie uniwersalnie. Eksperymenty zaczęły się w Chrome 116, a ostateczne wdrożenie dla 100 % użytkowników nastąpiło w marcu i kwietniu 2025 r.: Chrome umożliwia teraz bfcache dla wielu stron z no-store, pod warunkiem spełnienia określonych warunków bezpieczeństwa, a nie całkowitego wyjątku. Według dokumentacji Chrome wiąże się to z realnymi ograniczeniami — strona jest usuwana z bfcache, jeśli zmieni się stan autoryzacji lub pliki cookie w czasie jej zamrożenia (więc wylogowany gość lub ten z wyczyszczonymi plikami cookie nie zobaczy nieaktualnego zrzutu zalogowanej strony), a stała lista interfejsów API — te same interfejsy otwartych połączeń omówione poniżej (IndexedDB, WebSocket, WebRTC i pozostałe) — nadal wykluczają stronę z no-store z bfcache w taki sam sposób, jak każdą inną stronę. To zachowanie specyficzne dla Chrome w określonym zakresie wersji, a nie reguła, którą można zakładać, że inne przeglądarki lub starsze wersje Chrome będą stosować — pobierz aktualny raport DevTools/notRestoredReasons dla przeglądarki i wersji, którą faktycznie testujesz, zamiast ufać stałej regule kciuka. Praktyczny wniosek: każdy przewodnik (w tym starsze wersje tego), który wymienia no-store jako bezwarunkowy, trwały bloker bfcache, jest nieaktualny — a także traktowanie go jako w pełni rozwiązanego problemu. Jeśli świeżość treści ma naprawdę znaczenie dla strony, dokumentacja Chrome sugeruje no-cache lub krótki max-age (np. max-age=60) zamiast no-store.

Otwarte połączenia, obserwatory i inne blokery

W momencie nawigacji niektóre otwarte zasoby mogą nadal blokować kwalifikowalność — a dokładnie które i czy blokują całkowicie, czy tylko są zamykane-i-ponownie-łączone, zależy od przeglądarki i wersji. Traktuj poniższą listę jako przykłady wzorca, a nie stałą, trwałą listę blokerów:

  • Trwające żądania fetch() / XMLHttpRequest.
  • Otwarte transakcje IndexedDB.
  • Otwarte połączenia WebSocket / WebRTC, timery i obserwatory (MutationObserver, IntersectionObserver i podobne). To obszar aktywnie się rozwijający — najnowsze notatki z wydania Microsoft Edge pokazują, że otwarty WebSocket jest teraz zamykany, gdy strona wchodzi do bfcache (zamiast całkowicie blokować buforowanie), z zaleceniem ponownego połączenia za pomocą sprawdzenia event.persisted w zdarzeniu pageshow. To odzwierciedla szerszy trend Chrome w ograniczaniu liczby blokerów, a nie tylko wykluczaniu stron.

Ogólny wzorzec, do którego należy dążyć, zamiast zapamiętywania stałej listy: zamknij lub wstrzymaj otwarte połączenia, timery i obserwatory w obsłudze pagehide/freeze, a następnie przywróć je w obsłudze pageshow/resume, gdy event.persisted ma wartość true. Ten wzorzec przetrwa zmiany w przeglądarce dotyczące tego, które interfejsy API blokują kwalifikowalność całkowicie, a które tylko zawiesza i pozwala na ponowne połączenie.

window.opener, polityki uprawnień i ramki. Odwołanie window.opener, niektóre polityki uprawnień oraz osadzone ramki iframe (tego samego lub innego pochodzenia) mogą również wpływać na kwalifikowalność — to element listy kontrolnej, którą opracowałem w przewodniku Ahrefs po CLS oraz w dokumentacji Chrome. Ale nie zakładaj, która z nich jest faktyczną przyczyną na podstawie ogólnej listy kontrolnej: panel DevTools w Chrome i interfejs API notRestoredReasons raportują powody blokowania dla każdej ramki — osobno dla ramki głównej i każdej ramki iframe — ponieważ ramka faktycznie odpowiedzialna za blokadę nie zawsze jest stroną najwyższego poziomu. Pobierz prawdziwy powód z tego raportu na poziomie ramki dla testowanej przeglądarki, zamiast zgadywać na podstawie ogólnej listy.

Prawidłowa sekwencja zdarzeń/stanów cyklu życia

Pomylenie tego, co każde zdarzenie cyklu życia faktycznie dowodzi, a co jedynie sugeruje, to drugi najczęstszy błąd poprawności tutaj, po błędach kwalifikowalności powyżej:

Zdarzenie / stanSygnałCo to faktycznie oznaczaCo zrobić
pagehide (event.persisted === true)Zamiar zapisania w pamięci podręcznejPrzeglądarka próbuje zamrozić stronę dla bfcache — to nie potwierdzony wpis w pamięci podręcznejZamknij/wstrzymaj połączenia, timery i obserwatory tutaj; nie zakładaj, że strona faktycznie zostanie przywrócona
freezeWstrzymaneWykonywanie JS jest wstrzymane; strona może zostać usunięta przed jakimkolwiek przywróceniemNie podejmuj żadnych działań poza tymi, które już wykonałeś przy pagehide
(brak zdarzenia) możliwe usunięciePrzeglądarka może usunąć zamrożoną stronę z pamięci w dowolnym momencie — presja pamięci, limit czasu, reguła przeglądarki — i nie ma zdarzenia, które by to sygnalizowałoNie polegaj na późniejszym uruchomieniu kodu sprzątającego; zrób to bezwarunkowo przy pagehide/freeze
pageshow (event.persisted === true)Potwierdzone przywrócenieJedyny niezawodny sygnał, że przywrócenie z bfcache faktycznie nastąpiłoOdśwież stan wrażliwy na czas/wrażliwy, ponownie połącz zamknięte połączenia, policz dokładnie jeden widok analityczny
resumeWznowioneWykonywanie JS jest wznowione po potwierdzonym przywróceniuPonownie połącz wszystko, co zostało wstrzymane przy freeze

Praktyczna zasada: traktuj pagehide.persisted jako zamiar, a nie dowód — strona może nadal zostać usunięta, zanim zobaczysz jakiekolwiek przywrócenie. Tylko pageshow.persisted === true jest dowodem, że przywrócenie nastąpiło. Wykonuj sprzątanie bezwarunkowo przy pagehide/freeze (jest tanie i bezpieczne nawet przy zwykłej nawigacji), a prace specyficzne dla przywrócenia wykonuj tylko przy pageshow/resume, z warunkiem na event.persisted, aby nie odświeżać danych ani nie podwajać widoku analitycznego przy zwykłym świeżym załadowaniu.

Jak testować i diagnozować bfcache

Laboratorium / jednorazowo: Chrome DevTools

Otwórz DevTools → Application → Background services → Back/forward cache, a następnie kliknij “Test back/forward cache.” Chrome automatycznie nawiguje do chrome://terms/ i z powrotem, a następnie raportuje sukces lub konkretną listę powodów blokowania. Dobre do sprawdzania jednego URL-a na raz.

Pole / produkcja: API notRestoredReasons

Wcześniej jedynym sposobem sprawdzenia kwalifikowalności był ten ręczny test w DevTools, jeden URL na raz — nie było sposobu, aby zobaczyć, dlaczego nawigacje prawdziwych użytkowników były blokowane. Właściwość notRestoredReasons na PerformanceNavigationTiming (dostępna w Chrome 123+) zamyka tę lukę: raportuje konkretne powody blokowania dla ramki głównej i iframe z tego samego pochodzenia w rzeczywistych danych polowych.

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

Kilka rzeczy, które warto zrobić dobrze, gdy z tego korzystasz, prosto z wytycznych API Chrome:

  • To tylko Chrome (123+). Firefox i Safari nie udostępniają równoważnego API polowego, więc nadal potrzebujesz ręcznych testów punktowych w tych przeglądarkach, aby poznać wskaźnik przywracania.
  • Wynik null jest niejednoznaczny, a nie zielonym światłem. Może oznaczać, że strona została przywrócona, lub że przeglądarka po prostu nie zebrała powodu — dokumentacja Chrome sama mówi, aby nie traktować null jako dowodu udanego przywrócenia.
  • Tekst powodu nie jest stabilnym kontraktem. Nie koduj na sztywno dopasowań ciągów do niego; grupuj i analizuj trendy według powodu, ponieważ dokładne sformułowanie może się zmieniać między wersjami Chrome.

Praktycznie: pobieraj notRestoredReasons wraz ze wskaźnikami przywracania pageshow.persisted przed i po wdrożeniu poprawki, porównuj trend, a nie pojedynczy migawkowy pomiar, i łącz to z ręcznym przejściem DevTools/laboratoryjnym w Firefox i Safari dla przeglądarek, do których API nie dociera. To narzędzie, po które warto sięgnąć przy diagnozowaniu bfcache na dużą skalę w RUM/produkcji, zamiast sprawdzania URL-i jeden po drugim — tylko nie traktuj go jako pełnego obrazu.

Bfcache a Core Web Vitals — precyzyjna zależność

Oto niuans, który większość treści konkurencji zaciera, i kąt, który warto mieć na własność.

Jak mierzy się przywrócenie bfcache. Przeglądarki (a zatem i dane terenowe CrUX) liczą nawigację przywróconą z bfcache jako niezwykle szybkie “ładowanie strony” — niemal natychmiastowe LCP i, gdy strona jest zaimplementowana poprawnie (nic nie musi być ponownie układane), praktycznie zero dodatkowego CLS, ponieważ nie ma ponownego renderowania. W porównaniu DebugBear w rzeczywistych warunkach, strona przywrócona z bfcache osiągnęła LCP około 100 ms w porównaniu z ~427 ms dla niebuforowanego ładowania. To dokładnie dlatego bfcache pojawia się jako dźwignia na CLS i LCP w mojej własnej liście kontrolnej Ahrefs CLS, gdzie ująłem to prosto: “Make sure your pages are eligible for bfcache. The back/forward cache keeps pages in the browser cache. It allows for instant loading of a page that was already loaded, meaning no layout shifts will happen.” (tłumaczenie) „Dopilnuj, by strony kwalifikowały się do bfcache. Pamięć wstecz/do przodu przechowuje całe strony w pamięci przeglądarki, więc wcześniej otwarta strona wczytuje się natychmiast i nie powoduje przesunięć układu.”

Dwa zastrzeżenia dotyczące zakresu, które warto sprecyzować, ponieważ to tutaj treści konkurencji mają tendencję do przesadzania. Po pierwsze, dotyczy to tylko nawigacji, które CrUX klasyfikuje jako wstecz/do przodu (jego wymiar navigation-type) — nie mówi to nic o Twoich nawigacjach pierwszego odwiedzenia lub przeładowania, które stanowią większość ruchu na większości stron. Po drugie, przywrócenie poprawiające zmierzone doświadczenie użytkowników, którzy go otrzymują, nie jest tym samym co gwarancja: użytkownik, który został usunięty z bfcache (patrz tabela cyklu życia powyżej) nadal otrzymuje normalne, nieulepszone ładowanie, więc praca nad kwalifikowalnością bfcache przesuwa Twój wskaźnik przywracania wśród nawigacji wstecz/do przodu, a nie stały udział w całym ruchu — i nie gwarantuje Twojego zagregowanego wyniku terenowego Core Web Vitals, Twoich pozycji ani współczynnika konwersji. To realna, mierzalna dźwignia o konkretnym, ograniczonym zakresie, a nie ogólne rozwiązanie problemu wydajności lub SEO.

Czy bfcache jest czynnikiem rankingowym? Nie. To jest obronne, zróżnicowane twierdzenie. Własna dokumentacja Google dotycząca rankingu Core Web Vitals w ogóle nie wspomina o bfcache. Uczciwy łańcuch wpływów jest następujący: kwalifikowalność bfcache → lepsze terenowe wyniki CWV (głównie LCP/CLS) w nawigacjach wstecz/do przodu → Core Web Vitals jest jednym z wielu sygnałów “jakości strony”, które Google mówi, że są zgodne z tym, co już nagradzają jego systemy rankingowe. To znacznie słabsze, bardziej precyzyjne twierdzenie niż “bfcache zwiększa pozycje” — i to jest twierdzenie, które treści konkurencji powinny formułować, ale zwykle nie są w tym ostrożne. Bfcache jest również, słusznie, funkcją silnika renderującego, a nie funkcją robota indeksującego — nie ma to nic wspólnego z tym, jak Googlebot lub Bingbot indeksują Twoje strony, dlatego nie ma “podejścia Binga do bfcache dla SEO” tak jak w przypadku robots.txt lub sitemaps.

SPA i miękkie nawigacje. Bfcache działa na rzeczywistych zdarzeniach nawigacji i historii przeglądarki. Zmiana “miękkiej” trasy po stronie klienta w aplikacji jednostronicowej (zamiana widoku sterowana JS, która nie wyzwala rzeczywistej nawigacji przeglądarki) nie jest zdarzeniem bfcache i nie otrzymuje takiego samego traktowania. Próby niektórych narzędzi RUM, aby przypisać Core Web Vitals do miękkich nawigacji, mogą powodować rozbieżności pomiarowe CrUX-vs-RUM — warto to zaznaczyć, jeśli audytujesz witrynę opartą na frameworku JS.

Jak powszechne są blokery bfcache w praktyce?

HTTP Archive Web Almanac śledzi to i jest to żywy, zmieniający się obszar — a nie ustalona stara wiadomość. W edycji z 2022 roku co najmniej ~22% stron mobilnych było niekwalifikowalnych do bfcache ze względu na same kryteria unload i no-store. Od tego czasu użycie procedur obsługi unload spada we wszystkich poziomach witryn i urządzeń — ale użycie Cache-Control: no-store wzrosło (rozdział z 2025 roku szacuje je na około 23% witryn, w porównaniu z ~21% w 2024 roku, co przypisuje się częściowo większej liczbie uwierzytelnionych/spersonalizowanych doświadczeń i surowszym wymogom zgodności).

Kontrintuicyjne odkrycie, które warto przytoczyć: większe, bardziej ruchliwe serwisy nieproporcjonalnie częściej blokują własny bfcache. Wśród 1000 najpopularniejszych serwisów około 28% stron desktopowych i 20% stron mobilnych nadal używa handlerów unload, podczas gdy w wszystkich serwisach to tylko ~11% desktop / ~10% mobile — często dlatego, że większe serwisy mają więcej starszej analityki i kodu zależnego od unload. Serwisy, które mają najwięcej do stracenia na ruchu wstecz/do przodu, często same sobie przeszkadzają.

Gdzie to się znajduje

Bfcache to jedna z kilku dźwigni wydajności w tym klastrze. Jego korzyści widoczne są w danych terenowych Core Web Vitals — konkretnie w Cumulative Layout Shift i Largest Contentful Paint, ponieważ przywrócona strona wyświetla się natychmiast bez ponownego układu. Różni się to od caching, który przechowuje pliki, a nie migawkę żywej strony, mimo że oba mają wspólny nagłówek Cache-Control jako punkt styku. Nie ma bezpośredniego powiązania z Interaction to Next Paint, więc nie będę go wymuszać.

Add an expert note

Pin an expert quote

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