Front-end

Cache-Control – jak działa ustawianie czasu buforowania pobieranych danych

Cache-Control to nagłówek HTTP, który pozwala na kontrolowanie buforowania danych przez przeglądarki internetowe. Jest to szczególnie ważne przy tworzeniu stron internetowych, ponieważ pozwala na zwiększenie szybkości ładowania strony poprzez przechowywanie części danych na komputerze użytkownika.

12 maj 2022

Wczytywanie strony a Cache-Control

Wczytywanie się danej witryny internetowej określane jest jako buforowanie. Kiedy użytkownik odwiedza stronę po raz pierwszy, wówczas wszystkie jej elementy są pobierane i tworzy się kopia pewnej części plików w pamięci urządzenia. Dzięki temu przy kolejnej próbie otwarcia tej samej strony uruchamia się ona szybciej, ponieważ w pamięci podręcznej wciąż są dostępne załadowane wcześniej elementy, co usprawnia proces ładowania witryny. Przy korzystaniu z sieci CDN zasada jest podobna.

Cache-Control pozwala administratorowi na optymalizację strony. Daje możliwość precyzyjnego zarządzania parametrami buforowania poszczególnych zasobów danego serwisu. Dzięki temu odciążane są: łącze klienta, serwer plików oraz HTTP i wpływa na szybsze wczytanie podstron. Ważne, aby robić to umiejętnie.

Nagłówek Cache-Control jest elementem nierozerwalnie związanym z buforowaniem strony. Można go samodzielnie skonfigurować i w ten sposób wskazać sieci CDN oraz przeglądarce, w jaki sposób powinny buforować zawartość w postaci obrazów, treści, fontów czy plików XML, JS oraz JSON.

 

Czas buforowania

W przypadku Cache-Control kluczowym elementem jego konfiguracji jest czas, w którym dany element będzie obecny w pamięci podręcznej. Parametr Time to Live (TTL), określa maksymalny wiek zasobów, jaki mogą osiągnąć w pamięci podręcznej. Po tym czasie zostaną unieważnione i usunięte, a co za tym idzie, będzie trzeba je pobrać na nowo.

 

Ustawienie długiego czasu buforowania sprawdza się w przypadku zasobów niezmiennych na danej stronie. Dla pozostałych warto go ograniczyć, w przeciwnym razie stare przeglądarka będzie wczytywała stare zasoby, które generują opóźnienia.

Czas ładowania strony

Ustawienia Cache-Control

Cache-Control można ustawić na kilka sposobów. Wariant publik pozwala na buforowanie elementów strony dosłownie każdemu. No-cache służy wymuszeniu na użytkownikach ponownej weryfikacji, a ma na celu wymuszenie na przeglądarce sprawdzenia dostępności aktualizacji. Opcja private kierowana jest do danych poufnych, które mogą być buforowane jedynie lokalnie, z wyłączeniem CDN oraz proxy. Natomiast no-store wyłącza buforowanie w ogóle i jest przeznaczone dla tzw. danych wrażliwych.

 

Większość firm hostingowych odpowiednio formatuje nagłówek Cache-Control za swoich klientów. Administrator strony może samodzielnie zmienić ustawiania czasu buforowania pobieranych danych dzięki nagłówkom Cache-Control. W internecie nie brakuje przykładów komend, którymi można się posłużyć. Do przydatnych komend można zaliczyć: no-transform, max-age = , czy FilesMatch.

 

Należy jednak robić to umiejętnie, żeby nie zaszkodzić witrynie poprzez zmniejszenie przepustowości i zwiększenie czasu ładowania, będące wynikiem wczytywania starszych, mniej istotnych dla użytkownika treści. Wszelkie generowane w ten sposób opóźnienia wpłyną na negatywne odczucia i zniechęcą do odwiedzania strony. Cache-Control to ważny element w UX.

FAQ

FAQ – Cache-Control

  • Cache-Control to nagłówek HTTP sterujący cache'owaniem zasobów: mówi przeglądarce i CDN-owi, jak długo zasób jest świeży, kiedy trzeba go pobrać ponownie i kto może go przechowywać. Najważniejsze dyrektywy: max-age (czas świeżości w sekundach), s-maxage (odpowiednik dla cache współdzielonych, np. CDN), no-cache (przed użyciem zweryfikuj z serwerem), no-store (nie zapisuj wcale), public/private (czy CDN może przechowywać) i immutable (zasób nigdy się nie zmienia). To fundament wydajności webu.

  • max-age=31536000, immutable — dla statycznych zasobów z hashem w nazwie (main.abc123.css): przeglądarka trzyma je rok i nigdy nie pyta. max-age=3600 — typowe dla odpowiedzi API cache'owanych godzinę. no-store — dla danych wrażliwych: transakcji bankowych, danych osobowych. no-cache — dla stron HTML, które zawsze warto zweryfikować z serwerem. private — dla treści per użytkownik, których CDN nie powinien współdzielić.

  • Expires to nagłówek z czasów HTTP/1.0 podający bezwzględną datę wygaśnięcia — problematyczny, bo rozjechany zegar psuje cache. Cache-Control (HTTP/1.1) używa czasu względnego (max-age=3600 — godzina od teraz) i ma znacznie bogatszy zestaw dyrektyw, w tym no-store, immutable czy stale-while-revalidate. Gdy oba nagłówki są obecne, wygrywa Cache-Control. Współczesna praktyka: używać wyłącznie Cache-Control, Expires traktować jako zaszłość.

  • Dyrektywa stale-while-revalidate=N pozwala serwować przeterminowaną wersję zasobu, podczas gdy nowa pobiera się w tle. Przykład: max-age=3600, stale-while-revalidate=86400 — zasób świeży przez godzinę, a przez kolejną dobę może być podany „stary", z cichym odświeżeniem. Efekt: zero opóźnienia dla użytkownika i ostateczna spójność treści. Typowe zastosowania to serwisy informacyjne, blogi i strony kategorii e-commerce; pokrewna dyrektywa stale-if-error podaje starą wersję, gdy serwer źródłowy zawiedzie.

  • Cloudflare respektuje nagłówki automatycznie, a Workers pozwalają modyfikować zachowanie cache na edge'u. AWS CloudFront łączy Cache-Control z własnymi ustawieniami minimalnego i maksymalnego TTL. Vercel spina to z mechanizmami Next.js — nagłówkami w API routes i ISR. Netlify i Fastly dają programowalną kontrolę na brzegu sieci. Uniwersalna praktyka: agresywny cache dla zasobów statycznych (rok), krótki dla treści dynamicznych (minuty) i stale-while-revalidate tam, gdzie liczy się i szybkość, i świeżość.

Blog

Powiązane artykuły

Czytaj więcej
Front-end

Jam Stack – przełom czy dobrze znana technologia?

Jam Stack to technologia, która polega na budowaniu aplikacji internetowych za pomocą statycznie generowanych stron, które są hostowane na serwerach CDN. Jest coraz bardziej popularny wśród programistów, ponieważ oferuje wiele korzyści, takich jak szybkość, niskie koszty utrzymania i bezpieczeństwo.

Tomasz Kozon
17 lut 2022
Front-end

Client-side Hydration: jak działa i dlaczego jest kluczowa dla nowoczesnych aplikacji webowych

Nowoczesne aplikacje webowe muszą być jednocześnie szybkie, interaktywne i przyjazne dla użytkownika już od pierwszego załadowania strony. Właśnie w tym kontekście coraz większe znaczenie zyskuje client-side hydration, czyli mechanizm łączący renderowanie po stronie serwera z logiką uruchamianą w przeglądarce. Dzięki niemu możliwe jest wyświetlenie treści niemal natychmiast, a następnie płynne przejście do pełnej interaktywności aplikacji.

Tomasz Kozon
13 gru 2025
Front-end

Turbopack w praktyce: jak działa nowy bundler od Vercela

Rosnąca złożoność aplikacji webowych sprawia, że wydajność narzędzi developerskich ma dziś ogromne znaczenie. Turbopack, nowy bundler od Vercela, powstał jako odpowiedź na ograniczenia klasycznych rozwiązań, takich jak Webpack, szczególnie w dużych projektach Next.js. Jego głównym celem jest maksymalne skrócenie czasu startu aplikacji i natychmiastowy hot reload podczas pracy z kodem.

Tomasz Kozon
06 gru 2025
Front-end

Radix UI – biblioteka headless komponentów dla React

Radix UI to coraz popularniejsza biblioteka headless komponentów, która zdobywa uznanie wśród developerów React poszukujących elastycznych i solidnych rozwiązań. W świecie, gdzie dostępność i jakość UX mają kluczowe znaczenie, gotowe prymitywy Radix UI pozwalają budować interfejsy zgodne z najlepszymi praktykami. Biblioteka nie narzuca warstwy wizualnej, dzięki czemu świetnie sprawdza się w projektach opartych na własnym design systemie.

Tomasz Kozon
03 gru 2025
Front-end

React Storefront: Jak zbudować ultraszybki sklep internetowy?

Budowa ultraszybkiego sklepu internetowego to dziś nie tylko kwestia wygody użytkownika, ale kluczowy element przewagi konkurencyjnej w e-commerce. Każda dodatkowa sekunda ładowania potrafi obniżyć konwersję, dlatego nowoczesne technologie muszą stawiać wydajność na pierwszym miejscu. React Storefront powstał właśnie po to, by łączyć elastyczność Reacta z ekstremalną szybkością działania i sprawdzonymi wzorcami dla sklepów online.

Tomasz Kozon
29 lis 2025
Front-end

Parsley.js – lekka biblioteka do walidacji formularzy

Formularze są jednym z kluczowych elementów każdej strony internetowej i aplikacji webowej, a ich poprawne działanie ma bezpośredni wpływ na doświadczenie użytkownika. Walidacja danych pozwala uniknąć błędów, niekompletnych zgłoszeń oraz niepotrzebnej komunikacji z serwerem. Parsley.js to lekka i prosta w użyciu biblioteka JavaScript, która umożliwia skuteczną walidację formularzy po stronie klienta.

Tomasz Kozon
28 lis 2025