HTTP 304 Not Modified: symulacja żądanie po żądaniu

HTTP 304 Not Modified

HTTP 304 Not Modified: ETag i If-None-Match wyjaśnione | We.Inc

Zasymuluj żądanie warunkowe: ustaw ETag i Last-Modified serwera oraz If-None-Match i If-Modified-Since przeglądarki i zobacz 304 lub 200 wraz z powodem.

Odpowiedź 304 Not Modified mówi przeglądarce, że jej kopia w cache jest nadal aktualna, więc serwer nie wysyła ponownie treści. Jest to odpowiedź na warunkowe GET lub HEAD z nagłówkiem If-None-Match lub If-Modified-Since. 304 to dobra wiadomość, a nie błąd: oszczędza transfer, a plik z cache jest dalej używany.

Pary walidatorów stojące za 304

Wpisz, co serwer ma obecnie i co wysyła przeglądarka, a symulator zastosuje reguły pierwszeństwa ze specyfikacji HTTP. Pokaże status, który powinien zwrócić serwer, i nagłówek, który o nim zdecydował. Wyczyść pole, aby pominąć dany nagłówek.

Najczęściej zadawane pytania

Czy odpowiedź 304 to błąd?

Nie. To status z klasy przekierowań, oznaczający, że można użyć kopii z cache. Przeglądarka pokazuje stronę ze swojego cache, a przez sieć przeszły tylko nagłówki.

Czy odpowiedź 304 może mieć treść?

Nie. Specyfikacja mówi, że odpowiedź 304 kończy się na końcu sekcji nagłówków i nie może zawierać treści.

Co wygrywa: If-None-Match czy If-Modified-Since?

If-None-Match. Gdy żądanie zawiera oba, serwer obsługujący tagi encji sprawdza If-None-Match i ignoruje If-Modified-Since, bo tagi wykrywają zmiany, których nie wykryje data z dokładnością do sekundy.

Dlaczego po każdym wdrożeniu dostaję 200 zamiast 304?

Wdrożenie zmieniło plik lub jego ETag, więc tag przechowywany przez przeglądarkę już nie pasuje. To poprawne zachowanie. Jeśli niezmienione pliki też tracą 304, sprawdź, czy Twoje serwery nie generują różnych ETagów dla tej samej treści.

Czy POST kiedykolwiek zwraca 304?

Nie. If-None-Match i If-Modified-Since dają 304 tylko dla GET i HEAD. Dla innych metod niespełniony warunek daje 412 Precondition Failed.

Jak działa rewalidacja

Silne i słabe tagi

Wymiana komunikatów w sieci

Pierwsza wizyta: 200 z walidatorami

Serwer przekazuje ETag i datę Last-Modified razem z treścią.

Kolejna wizyta: 304 bez treści

Przeglądarka odsyła zapisany tag i dostaje tylko nagłówki.

Samodzielna obsługa żądań warunkowych

Serwer http w Node z ETagiem opartym na hashu treści

Hashuje treść, porównuje ją z If-None-Match i przy dopasowaniu wysyła 304 bez treści.

Symulator żądań warunkowych

Co serwer ma teraz

Co wysyła przeglądarka

ETag

Last-Modified

If-None-Match

If-Modified-Since

Odpowiedź serwera

If-None-Match zawiera tag, który przy porównaniu słabym pasuje do bieżącego ETag, więc kopia w cache jest aktualna.

If-None-Match to *, a zasób istnieje, więc warunek jest fałszywy.

Żaden tag w If-None-Match nie pasuje do bieżącego ETag, więc serwer wysyła nową treść. If-Modified-Since nie jest sprawdzany.

Brak If-None-Match, a Last-Modified nie jest późniejszy niż If-Modified-Since.

Brak If-None-Match, a Last-Modified jest późniejszy niż If-Modified-Since.

If-Modified-Since jest obecny, ale jednej z dwóch dat nie da się odczytać, więc nagłówek jest ignorowany.

Żądanie nie ma walidatorów, więc jest zwykłym żądaniem.

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony