---
title: "Cache-Control"
description: "Cache-Control to nagłówek HTTP określający, czy i jak długo przeglądarka lub CDN może przechowywać odpowiedź w pamięci podręcznej. Poznaj dyrektywy."
url: "https://nodea.pl/pl/slownik-pojec/cache-control"
lang: "pl"
updated: "2026-07-13"
---

# Cache-Control

> Cache-Control to nagłówek HTTP, którym serwer instruuje przeglądarki i serwery pośredniczące (proxy, CDN), czy odpowiedź wolno buforować, na jak długo i na jakich zasadach ją odświeżać.

**Cache-Control** to nagłówek protokołu [HTTP](https://nodea.pl/pl/slownik-pojec/http), za pomocą którego serwer określa zasady buforowania odpowiedzi: czy wolno ją zapisać w pamięci podręcznej, komu (tylko przeglądarce czy również serwerom pośredniczącym), na jak długo oraz jak weryfikować jej świeżość. To podstawowe narzędzie sterowania wydajnością — poprawnie skonfigurowany cache potrafi wyeliminować większość zbędnych zapytań do serwera.

## Jak działa Cache-Control?

Nagłówek składa się z dyrektyw rozdzielonych przecinkami, np. *Cache-Control: public, max-age=31536000, immutable*. Najważniejsze z nich to:

- **max-age=N** — czas świeżości odpowiedzi w sekundach (odpowiednik [TTL](https://nodea.pl/pl/slownik-pojec/ttl)); po jego upływie klient musi zapytać serwer o nową wersję;
- **s-maxage=N** — osobny czas świeżości dla pamięci współdzielonych, np. [CDN](https://nodea.pl/pl/slownik-pojec/cdn) i reverse proxy;
- **public / private** — czy odpowiedź mogą przechowywać cache współdzielone, czy wyłącznie przeglądarka użytkownika;
- **no-cache** — zapis dozwolony, ale każde użycie wymaga rewalidacji (nagłówki ETag / Last-Modified);
- **no-store** — całkowity zakaz zapisu, właściwy dla danych wrażliwych;
- **immutable** — obietnica, że zasób nigdy się nie zmieni w okresie świeżości;
- **stale-while-revalidate** — pozwala podać przeterminowaną odpowiedź, odświeżając ją w tle.

## Zastosowanie w praktyce

Typowa strategia dzieli zasoby na dwie grupy. Pliki statyczne z odciskiem wersji w nazwie (CSS, JS, fonty, grafiki) dostają długi *max-age* i *immutable* — zmiana treści oznacza nową nazwę pliku, więc nie ma ryzyka podania nieaktualnej wersji. Dokumenty HTML i odpowiedzi API otrzymują krótki czas świeżości albo *no-cache* z rewalidacją, dzięki czemu publikacja zmian jest widoczna niemal natychmiast.

Nagłówki ustawia się w konfiguracji serwera WWW (Apache — moduł mod\_headers i .htaccess, Nginx — dyrektywa add\_header) lub w aplikacji. Na hostingu współdzielonym zwykle wystarczy odpowiedni wpis w pliku .htaccess, a efekt łatwo zweryfikować w zakładce Network narzędzi deweloperskich przeglądarki.

### Czym różni się no-cache od no-store?

Dyrektywa no-cache pozwala zapisać odpowiedź w pamięci podręcznej, ale przed każdym użyciem wymaga rewalidacji na serwerze (np. przez ETag). No-store całkowicie zakazuje zapisywania odpowiedzi — stosuje się ją do danych wrażliwych, jak strony bankowości czy panele użytkownika.

### Jak długo cache'ować pliki statyczne?

Zasoby z wersjonowanymi nazwami (np. app.3f9a2c.js) można buforować nawet rok z dyrektywą immutable, bo każda zmiana pliku generuje nowy adres URL. Dokumenty HTML lepiej oznaczać krótkim max-age lub no-cache, aby użytkownicy szybko widzieli aktualną treść.

## Powiązane

- [Cache i microcache](https://nodea.pl/pl/slownik-pojec/cache-i-microcache)
- [CDN](https://nodea.pl/pl/slownik-pojec/cdn)
- [TTL](https://nodea.pl/pl/slownik-pojec/ttl)
- [HTTP](https://nodea.pl/pl/slownik-pojec/http)
- [TTFB](https://nodea.pl/pl/slownik-pojec/ttfb)

---

Wersje językowe: [en](https://nodea.io/en/glossary/cache-control.md)  
Spis treści witryny: [llms.txt](https://nodea.pl/pl/llms.txt)
