Вопрос

Как получить дату создания или размер файла, например, Hello.jpg по адресу http://www.mywebsite.com/now/Hello.jpg(примечание:Этот URL-адрес не существует)?Цель этого вопроса — заставить мое приложение повторно загрузить файлы с любого веб-сайта, когда оно обнаружит, что на веб-сайте имеется обновленная версия файлов, а файлы в моей локальной папке устарели.Есть идеи?

Это было полезно?

Решение

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

$ telnet www.google.com 80
Trying 216.239.59.103...
Connected to www.l.google.com.
Escape character is '^]'.
HEAD /intl/en_ALL/images/logo.gif HTTP/1.0

HTTP/1.0 200 OK
Content-Type: image/gif
Last-Modified: Wed, 07 Jun 2006 19:38:24 GMT
Expires: Sun, 17 Jan 2038 19:14:07 GMT
Cache-Control: public
Date: Tue, 16 Sep 2008 09:45:42 GMT
Server: gws
Content-Length: 8558
Connection: Close

Connection closed by foreign host.

Обратите внимание, что вам, вероятно, придется украсить этот простой и простой подход множеством эвристик в зависимости от безумия администратора каждого веб-сервера, поскольку каждый может отправлять любые заголовки, которые ему нравятся.Если они не предоставляют заголовки кэширования (Last-Modified, Expires, Cache-Control), ни Content-Length, ни etag, вам придется повторно загрузить его для тестирования.

Другие советы

Для этой цели веб-сервер может отправить заголовок Last-Modified и/или Etag.И вы можете отправить заголовок if-modified-since в своем запросе.

видеть http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.htmlразделы 14.19, 14.25 и 14.29

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top