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?
2 odpowiedzi
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.
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).
Podobne pytania
Nowe pytania
asp.net
ASP.NET to platforma programistyczna firmy Microsoft do tworzenia aplikacji internetowych, która umożliwia programistom tworzenie dynamicznych witryn internetowych, aplikacji internetowych i usług internetowych. Przydatne jest używanie tego tagu w połączeniu ze znacznikiem typu projektu, np. [asp.net-mvc], [asp.net-webforms] lub [asp.net-web-api]. NIE używaj tego tagu w przypadku pytań dotyczących ASP.NET Core - zamiast tego użyj [asp.net-core].