
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.
CEO
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.
Powiązane case studies


Wynajem magazynu w minuty zamiast dni - automatyzacja umów i płatności
Klient: Balticon S.A.
Branża: Logistyka / LogTech

Dr Marcus - strona internetowa z katalogiem produktów
Klient: Dr Marcus
Branża: Motoryzacja / Mobility
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.

Powiązane usługi
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ć) iimmutable(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 tymno-store,immutableczystale-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=Npozwala 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 dyrektywastale-if-errorpodaje 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
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.
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.
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.
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.
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.
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.






