2011-07-09 9 views
5

pracujemy nad zredukowaniem "bezsensownego" ruchu.wysyłanie cache-control/expires/pragma z odpowiedzią 404 - prawidłowe/rozumiane przez nowoczesne przeglądarki?

jeśli wyślemy prawidłowe nagłówki kontrolne pamięci podręcznej (a-la "do cache") z odpowiedzią 404, czy współczesne przeglądarki będą buforować, że żądany zasób nie istnieje?

używamy niestandardowego programu obsługi klienta 404, który wysyłał, nie buforuje nagłówków z powodu utworzenia sesji, więc usunęliśmy te. ale teraz zastanawiają się, czy dla zasobów, które są CERTAIN są nieprawidłowe, czy powinniśmy wysłać odpowiednie nagłówki pamięci podręcznej?

są to zasoby publiczne udostępniane przez te same URI przez wszystkich użytkowników.

dziękuję!

+1

Podaj nazwę ustawionych nagłówków pamięci podręcznej i sposób ich używania. – hakre

Odpowiedz

10

Nowoczesne przeglądarki mają implementację HTTP Protocol idealnie zbliżoną do standardu, taką samą dla serwerów proxy, które należy wziąć pod uwagę, jeśli chcesz mieć wpływ na ruch użytkownika i nieautentyczny bot. Obecny version is 1.1, niektóre fragmenty:

10,4 Client Error 4xx

Klasa 4xx kod stanu jest przeznaczony dla przypadków, w których klient wydaje się, że popełnił błąd. Z wyjątkiem sytuacji, gdy odpowiada na żądanie HEAD, serwer POWINIEN zawierać obiekt zawierający wyjaśnienie sytuacji błędu i to, czy jest to stan tymczasowy czy stały. Te kody stanu mają zastosowanie do każdej metody żądania. Aplikacje użytkownika POWINIEN wyświetlać użytkownikowi dołączoną całość.

Jeśli klient wysyła dane, wdrożenie serwera przy użyciu protokołu TCP POWINIEN być ostrożnym, aby upewnić się, że klient potwierdza odbiór pakietu (ów) zawierającego odpowiedź, zanim serwer zamknie połączenie wejściowe. Jeśli klient kontynuuje wysyłanie danych do serwera po zamknięciu, stos TCP serwera wyśle ​​pakiet resetowania do klienta, który może usunąć niepotwierdzone bufory wejściowe klienta, zanim zostaną one odczytane i zinterpretowane przez aplikację HTTP.

Dokładniej na 404:

10.4.5 404 Not Found

Serwer nie znaleziono niczego dopasowanie Request-URI. Nie podano, czy warunek jest tymczasowy czy trwały. Kod stanu 410 (Gone) POWINIEN być użyty, jeśli serwer wie, poprzez jakiś mechanizm konfigurowalny wewnętrznie, że stary zasób jest trwale niedostępny i nie ma adresu przekierowania. Ten kod statusu jest powszechnie używany, gdy serwer nie chce ujawnić dokładnie, dlaczego odmówiono podania lub gdy nie ma zastosowania żadna inna odpowiedź.

Tyle za kod odpowiedzi 404.

Pytałeś:

teraz [my] zastanawiasz się czy zasobów Jesteśmy przekonani są nieprawidłowe, należy wysłać odpowiednie nagłówki cache?

Nie podano żadnych konkretnych nagłówków pamięci podręcznej, których chcesz użyć, więc odpowiedź na to pytanie jest nieco nieprecyzyjna. Buforowanie to sekcja w specyfikacji protokołu: 13 Caching in HTTP.

Ogólnie dodaje powinny być co szukasz, wypis z 13.1.1 Cache Correctness:

Prawidłowe cache musi odpowiedzieć na wezwanie z większości odpowiedzi up-to-date posiadanych przez cache, który jest odpowiedni na żądanie (patrz punkt 13.2.5, 13.2.6 i 13.12), która spełnia jeden z następujących warunków:

...

3. It is an appropriate 304 (Not Modified), 305 (Proxy Redirect), 
    or error (4xx or 5xx) response message. 

Dzięki temu można buforować komunikaty odpowiedzi 404 i przesyłać je do pamięci podręcznej. Proxy i Klienci powinni się z tym uporać.

+0

tak naprawdę ma to sens ... w rezultacie: a) jeśli nie zostanie zmodyfikowany od nagłówka, wyślij nagłówki pamięci podręcznej + niestandardową stronę 404, b) jeśli tak, jeśli-zmodyfikowano-od nagłówka, wyślij 304 niezmodyfikowany kod stanu bez ciała. dzięki. –

+2

@ anonimowy-jeden: Cóż, to daje HEAD roundtrips dla skryptu 404 php, który nie ma żadnego znaczenia, ponieważ będzie on nadal wywoływany. Jeśli naprawdę masz pewność, że zasób jest nieprawidłowy, zezwól na buforowanie przez kilka dni i nie rób niczego w stylu "jeśli jest zmodyfikowany od". Po prostu pozwól mu się zbuforować. Jeśli możesz zidentyfikować zasób, którego faktycznie poszukują użytkownicy, użyj opcji 410 Gone zamiast lub 302 przeniesionych z nagłówkiem lokalizacji i nową lokalizacją w ciele, aby zachować połączenie w wyszukiwarkach i zasobach zewnętrznych. Pozwól tej pamięci podręcznej na odpowiedzi również na dni. – hakre

Powiązane problemy