Data publikacji: 21 października 2024 r., ostatnia aktualizacja: 9 września 2025 r.
Chrome wprowadza zmianę, która umożliwi korzystanie z pamięci podręcznej stanu strony internetowej w przypadku stron korzystających z Cache-Control: no-store
, gdy jest to bezpieczne. Dowiedz się, co to oznacza dla programistów.
Tło
Ustawienie Cache-Control: no-store
jako nagłówka HTTP jest sygnałem, że strona nie powinna być przechowywana w pamięci podręcznej HTTP. Należy go używać w przypadku stron zawierających dane wrażliwe, np. stron, na których użytkownik jest zalogowany, ale dyrektywa no-store
jest często używana na stronach bez danych wrażliwych.
W przypadku pamięci podręcznej typu „wstecz/do przodu” zamiast niszczyć stronę, gdy użytkownik z niej wychodzi, odkładamy to w czasie i wstrzymujemy wykonywanie kodu JavaScript. Jeśli użytkownik szybko wróci, ponownie wyświetlimy stronę i wznowimy wykonywanie kodu JavaScript. Dzięki temu użytkownik może niemal natychmiast przejść do innej strony.
Chociaż nie jest to wymagane przez specyfikację HTML, przeglądarki zwykle traktują Cache-Control: no-store
jako sygnał, aby nie umieszczać strony w pamięci podręcznej typu „wstecz/do przodu”. Jest to najczęstszy powód, dla którego pamięć podręczna nie jest używana – dotyczy to około 17% nawigacji w historii na urządzeniach mobilnych i 7% nawigacji w historii na komputerach. Oznacza to, że te strony nie korzystają z szybkiego przywracania i muszą w pełni ponownie załadować stronę, w tym wywołania sieciowe, wykonanie kodu JavaScript i renderowanie.
Często wartość Cache-Control: no-store
jest ustawiana, aby uniknąć problemów z pamięcią podręczną, gdy witryna ulega zmianie. Jednak w przypadku korzystania z pamięci podręcznej stanu strony internetowej ten powód ma mniejsze znaczenie, ponieważ cała strona jest przywracana niemal tak, jakby była cały czas otwarta.
Jak Chrome zmienia to zachowanie
Chrome zapowiedział zmianę tego zachowania, ale podchodzi do niej ostrożnie. Eksperymenty prowadzimy od wersji Chrome 116, stopniowo zwiększając odsetek wczytań stron. Oczekujemy, że w marcu i kwietniu 2025 r. osiągnie on 100%.
Dane wrażliwe
Nasza analiza pokazuje, że większość nawigacji wstecz lub do przodu nie zawiera danych wrażliwych, więc powinna kwalifikować się do pamięci podręcznej stanu strony internetowej. Istnieją jednak przypadki, w których strony nie powinny być umieszczane w pamięci podręcznej stanu strony internetowej. Na przykład po wylogowaniu nie powinno być możliwe przywrócenie strony, na której użytkownik był zalogowany, przez cofnięcie lub przejście do przodu.
Aby tego uniknąć, Chrome usunie stronę z pamięci podręcznej, gdy zmienią się pliki cookie lub inne metody autoryzacji.
Dodatkowo używanie tych interfejsów API na stronach korzystających z Cache-Control: no-store
nadal będzie powodować, że nie będą się one kwalifikować do korzystania z pamięci podręcznej stanu strony internetowej:
Pamiętaj, że nie jest to pełna lista interfejsów API, które uniemożliwiają korzystanie z pamięci podręcznej, ale interfejsy API, które blokują pamięć podręczną na stronach Cache-Control: no-store
, nawet jeśli nie są używane w momencie opuszczania strony.
Limit czasu pamięci podręcznej stanu strony internetowej w przypadku stron Cache-Control: no-store
jest również skrócony do 3 minut (z 10 minut w przypadku stron, które nie używają Cache-Control: no-store
), aby jeszcze bardziej zmniejszyć ryzyko.
Rezygnacja z usług w wersji Enterprise
Firmy często mają oprogramowanie, które trudno zaktualizować, oraz urządzenia współdzielone. Zasadę AllowBackForwardCacheForCacheControlNoStorePageEnabled
można wyłączyć, aby nadal uniemożliwiać korzystanie z pamięci podręcznej stanu strony internetowej w przypadku stron Cache-Control: no-store
.
Testowanie zmiany
Deweloperzy mogą przetestować tę zmianę za pomocą tego flagi:
--enable-features=CacheControlNoStoreEnterBackForwardCache:level/restore-unless-cookie-change
Jeśli ma zastosowanie którykolwiek z powyższych wyjątków (np. zmiana plików cookie), uniemożliwi to korzystanie z pamięci podręcznej stanu strony internetowej. W narzędziach deweloperskich Chrome do testowania pamięci podręcznej stanu strony internetowej pojawi się komunikat „Strony, których główne zasoby mają Cache-Control: no-store
, nie mogą korzystać z pamięci podręcznej stanu strony internetowej”.
Aby przeprowadzić test z tym flagą i bez niej, możesz użyć tej strony testowej pamięci podręcznej wstecz/do przodu.
Co deweloperzy powinni wiedzieć
Aby użytkownicy mogli korzystać z większego wykorzystania pamięci podręcznej, deweloperzy nie muszą wprowadzać żadnych zmian, ale w związku z tym mogą pojawić się pewne kwestie, które warto wziąć pod uwagę. Podobne kwestie mogły być brane pod uwagę przez inne witryny podczas początkowego wdrażania pamięci podręcznej typu „wstecz/do przodu” w grudniu 2021 r.
Czy deweloperzy powinni nadal dążyć do ograniczenia użycia Cache-Control: no-store
?
Pamięć podręczna typu „wstecz/do przodu” jest włączona w Cache-Control: no-store
w wcześniej wspomnianych ograniczonych okolicznościach i tylko w Chrome. Inne przeglądarki mogą nadal blokować korzystanie z pamięci podręcznej, gdy używana jest funkcja Cache-Control: no-store
.
Zalecamy ograniczanie użycia Cache-Control: no-store
zamiast polegania na tych heurystykach.
Wpływ na wydajność
Wprowadzamy tę zmianę, aby poprawić jakość stron dla użytkowników internetu. Gdy po raz pierwszy wprowadziliśmy pamięć podręczną typu „wstecz/do przodu”, zauważyliśmy znaczną poprawę podstawowych wskaźników internetowych. Teraz chcemy, aby te same ulepszenia były dostępne w większej liczbie witryn.
Właściciele witryn mogą zauważyć poprawę podstawowych wskaźników internetowych, gdy ta zmiana zostanie wdrożona. Mogą też mierzyć wykorzystanie pamięci podręcznej typu „wstecz/dalej” w raporcie na temat użytkowania Chrome, w tym w CrUX Vis.
Statystyki wpływu
Strony przywracane z pamięci podręcznej stanu strony internetowej „przywracają” starą stronę (w tym stertę JavaScriptu), a nie wczytują jej ponownie. Wielu popularnych dostawców usług analitycznych nie mierzy przywracania z pamięci podręcznej jako nowych wyświetleń strony, ponieważ rejestrują oni wyświetlenia tylko podczas początkowego wczytywania.
Dlatego po pierwszym użyciu pamięci podręcznej przeglądarki w przypadku niektórych witryn może nastąpić spadek liczby wczytań stron w statystykach. Zalecamy traktowanie ich jako wyświetleń strony przez ustawienie odbiorników zdarzenia pageshow
i sprawdzenie właściwości persisted
:
// Send a pageview when the page is first loaded.
gtag('event', 'page_view');
// Send another pageview if the page is restored from bfcache.
window.addEventListener('pageshow', (event) => {
if (event.persisted) {
// Page was restored from bfcache, sent another page view.
gtag('event', 'page_view');
}
});
Obsługa aktualizacji podczas przywracania strony
Witryny mogą teraz widzieć użycie pamięci podręcznej, mimo że wcześniej nie miały takiej możliwości, a strona byłaby w takim przypadku w pełni przeładowana świeżymi danymi. Deweloperzy mogą więc rozważyć odświeżanie danych po przywróceniu strony z pamięci podręcznej.
Aktualizacje można wywoływać w podobny sposób jak rejestrowanie dodatkowych wyświetleń stron na potrzeby analityki za pomocą zdarzenia pageshow
i sprawdzania właściwości persisted
.
Pamiętaj, że nie wszystkie treści wymagają aktualizacji, a użytkownicy mogą woleć „wrócić” do treści, które widzieli wcześniej. Na przykład odświeżenie listy artykułów może spowodować, że użytkownik nie zobaczy już artykułu, do którego chciał wrócić.
Wpływ na reklamy
Podobnie jak w przypadku wpływu na statystyki, witryny mogą odnotować spadek liczby wyświetleń reklam, jeśli reklamy będą się wczytywać tylko podczas wczytywania strony. Reklamy mogą być odświeżane automatycznie po przywróceniu z pamięci podręcznej bfcache, aby zapewnić spójność z pełnym wczytaniem strony. Ponownie używane jest zdarzenie pageshow
i sprawdzana jest właściwość persisted
, ale nie zawsze jest to właściwe rozwiązanie. Zapoznaj się z dokumentacją dostawcy reklam, aby dowiedzieć się, jak wywoływać ponowne wczytywanie reklam.
Więcej informacji o pamięci podręcznej stanu strony internetowej
Więcej informacji o pamięci podręcznej stanu strony internetowej znajdziesz w naszym szczegółowym przewodniku technicznym.
Prześlij opinię
Chętnie poznamy Twoją opinię na temat tej zmiany. Możesz ją przesłać w narzędziu do śledzenia problemów w Chrome, korzystając z komponentu bfcache.
Podsumowanie
Cieszymy się, że możemy udostępnić bfcache na większej liczbie stron, aby zwiększyć komfort użytkowników. Dokładnie rozważyliśmy tę zmianę i nasze podejście ma na celu wprowadzenie jej w jak najbezpieczniejszy sposób. Mamy nadzieję, że te informacje pomogą deweloperom zrozumieć tę zmianę i wprowadzić niezbędne modyfikacje, aby uniknąć problemów, gdy wejdzie ona w życie.