TenArchive

2026-10-05 · IT / WEB · PORADNIK

W tym wpisiedwa osobne pytaniawersjonuj odwołanie do zasobuodtwórz skompresowany plik oboksprawdź rzeczywistą odpowiedźmała lista przed publikacją

dwa osobne pytania

Kompresja odpowiada na pytanie „ile bajtów przesyłamy?”, a cache — „czy przesyłamy je ponownie?”. Rozwiązują różne problemy. Skompresowany zasób nadal może być stary, a aktualny plik nadal może być zbyt duży. Zacznij od odpowiedzi otrzymywanej przez odwiedzającego, nie tylko od edytowanego pliku.

wersjonuj odwołanie do zasobu

Po zmianie CSS lub JavaScript zmień URL we wszystkich stronach HTML, które go używają. Na małej stronie wystarczy parametr wersji:

<link rel="stylesheet" href="/assets/css/site.css?v=20261005explore1">
<script defer src="/assets/js/site.js?v=20261005cities2"></script>

URL jest kluczem cache przeglądarki. Zmiana pliku przy zachowaniu adresu i długiego czasu ważności może pozostawić odwiedzających ze starymi bajtami. HTML powinien mieć krótki czas ważności, żeby odkrywać nowe adresy zasobów. Sprawdź również proxy lub CDN: niektóre konfiguracje pomijają parametry zapytania.

odtwórz skompresowany plik obok

Nginx z gzip_static on może serwować gotowy plik .gz obok oryginału. Jeśli zmienisz site.css, ale pozostawisz jego skompresowaną kopię, klienci akceptujący gzip mogą dostać wczorajszy CSS. Obie wersje generuj z jednego wydania i zachowaj uprawnienia pozwalające serwerowi czytać plik.

gzip -n -9 -c site.css > site.css.gz
gzip -t site.css.gz
gzip -dc site.css.gz | cmp - site.css

Ostatnie polecenie powiedzie się tylko wtedy, gdy zdekompresowana kopia jest identyczna ze źródłem. -n pomija nazwę i znacznik czasu w metadanych, zapewniając powtarzalny wynik. Pracuj na kopii roboczej; przed podmianą produkcyjnych plików wykonaj backup.

sprawdź rzeczywistą odpowiedź

Polecenia używają zarezerwowanej domeny przykładowej; podstaw własny publiczny URL. Najpierw sprawdź nagłówki, potem pobierz skompresowane bajty bez automatycznego dekodowania:

curl -I https://example.org/assets/css/site.css?v=20261005explore1
curl -sS -H "Accept-Encoding: gzip" \
  https://example.org/assets/css/site.css?v=20261005explore1 -o response.gz
gzip -t response.gz

Szukaj Content-Encoding: gzip, odpowiedniego Cache-Control i Vary: Accept-Encoding. Bez nagłówka kompresji odpowiedź może być zwykłym tekstem; nie zakładaj, że pobrany plik jest gzipem. Sprawdź też podstronę wpisu i nieistniejący adres: przyjazna strona błędu nadal musi zwracać 404.

mała lista przed publikacją

Przed publikacją: wykonaj backup poza katalogiem publicznym, odtwórz pliki skompresowane, spójnie zmień wersje zasobów, zweryfikuj konfigurację serwera, jeśli ją zmieniałeś, oraz sprawdź odpowiedzi z cache i bez niego. Otwórz istniejący głęboki link oprócz strony głównej. Na końcu potwierdź, że pliki backupu, konfiguracji i prywatne skrypty nie są dostępne przez WWW.

Nginx — gzip_staticMDN — cache HTTP