HttpWebResponse LastModified - PullRequest
       8

HttpWebResponse LastModified

3 голосов
/ 08 октября 2010

Является ли HttpWebResponse.LastModified точным? Это всегда присутствует? Мой проект заключается в создании своего рода специализированного веб-сканера, и я застрял, если я буду использовать значение хеш-функции ресурса или просто свойство HttpWebResponse.LastModified для проверки «свежести» ресурса.

Использование значения хеша означает потоковую передачу ресурса каждый раз, когда он проверяется. Это сильно влияет на общую производительность.

Если я просто проверю HttpWebResponse.LastModified, это точно?

Ответы [ 2 ]

5 голосов
/ 08 октября 2010

HttpWebResponse.LastModified возвращает значение заголовка ответа HTTP Last-Modified.

Заголовки ответа HTTP устанавливаются сервером HTTP, отправляющим ответ. Это полностью зависит от сервера, если он устанавливает заголовок ответа Last-Modified и устанавливает ли он точное значение или нет.

Заголовок ответа Last-Modified является частью модели проверки для кэширования в HTTP. Обычно используется в сочетании с заголовком запроса If-Modified-Since. Вы можете прочитать HTTP / 1.1, часть 6: Кэширование для подробностей.

3 голосов
/ 08 октября 2010

Это зависит от вашей цели.

Last-Modified будет означать, что сервер будет рад, если вы по-прежнему будете использовать сущность, у которой было то же самое значение с последним изменением (или позже, косвенно, хотя для последнего измененного сервера было бы странно когда-либо возвращаться назад, но может произойти в некоторых многосерверных ситуациях).

Электронный тег сильнее (тем более, если он не является «слабым» электронным тегом) в том смысле, что он идентифицирует конкретную сущность (электронные теги для разных языковых версий, разных версий типа контента или другой кодировки контента) версии будут отличаться, если они на самом деле не являются одной и той же сущностью [что может произойти при ограниченном наборе обстоятельств]).

И то, и другое может быть "незакрепленным" с точки зрения того, что изменение сервера считается незначительным; сервер рад, что вы продолжаете использовать предыдущий объект, потому что он считает его тем же самым (за исключением «сильных» электронных тегов, которые должны указывать идентичность октета для октета для использования с запросами диапазона).

И то и другое, конечно, может быть просто неверным. Баги случаются. Тем не менее, когда они ошибаются, чаще всего в другом направлении, сообщая об изменении, когда ничего не произошло (допустимое поведение, можно быть слишком осторожным в отношении свежести; оно никогда не наносит ущерба, только делает неоптимальным).

Тогда возникает вопрос: нужно ли вам знать, что сервер считает, что никаких изменений не было сделано (большая часть использования) или действительно произошло изменение (в значительной степени ограниченное диагностическими инструментами).

Если у вас нет явной причины не доверять последней модификации и электронному тегу (но доверять электронному тегу больше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...