Wyjaśnij ten dziwny nagłówek If-Modified-Since przekazany przez IE9

W mojej aplikacji sieci web ASP.NET 4.0 uzyskałem ogólny program obsługi (.ashx), który obsługuje obrazy przechowywane w bazie danych. W trosce o wydajność zajmuję się niektórymi nagłówkami związanymi z buforowaniem i przekazywaniem informacji o pamięci podręcznej.

Otrzymuję błędy analizy DateTime umiarkowanie często z próby przeanalizowania zawartości nagłówka If-Modified-Since, zwykle z IE9. Okazuje się, że wysyła coś takiego:

Pon, 28 listopada 2011 16:34:52 GMT; długość=8799

Obsługuję to za pomocą wyrażenia regularnego, aby usunąć ostatnią część. Ale jestem ciekawa: do jakiej długości się odnosi i do czego to służy? Czy jest to rozmiar danych w pamięci podręcznej dla żądanego adresu URL?

6
Tom Hamming 27 wrzesień 2012, 21:12

2 odpowiedzi

Najlepsza odpowiedź

Według starego wpisu na serwerze proxy Squid Lista mailingowa:

Parametr długości If-Modified-Since jest rozszerzeniem Netscape HTTP/1.0, mającym na celu poprawę dokładności If-Modified-Since w przypadku, gdy dokument jest aktualizowany dwa razy w ciągu tej samej sekundy.

HTTP/1.1 rozwiązał ten sam problem w lepszy sposób poprzez nagłówek ETag i If-None-Match.

Zgaduję, że IE zaadaptował to rozszerzenie w pewnym momencie i zostawił je.

1
Stephen Booher 28 wrzesień 2012, 00:06

To wydaje się być starym rozszerzeniem Netscape pola nagłówka (zobacz starożytna dyskusja na temat http-wg); chociaż wydaje się, że w rzeczywistości jest przeciwko obu HTTP/1.0< /a> i HTTP/1.1 (pomysł został (funkcjonalnie) zastąpiony nagłówkiem ETag). Nie mam pojęcia, czy/dlaczego IE9 wysyła to i pod jakimi określonymi warunkami (przypuszczam, że wyzwala to tylko określona kombinacja nagłówków buforowania).

Myślę, że najlepszym rozwiązaniem byłoby upuszczenie czegokolwiek po średniku, który jest zwykle używany w HTTP do oddzielenia parametrów rozszerzenia w nagłówkach (patrz np. nagłówek Akceptuj).

1
Mormegil 28 wrzesień 2012, 00:02