Получить дату последнего изменения страницы с помощью Java - PullRequest
2 голосов
/ 30 октября 2010

Существует ли стандартный способ определения даты последнего изменения страницы?В настоящее время я делаю это:

URLConnection uCon = url.openConnection();
uCon.setConnectTimeout(5000);   // 5 seconds
String lastMod = uCon.getHeaderField("Last-Modified");
System.out.println("last mod: "+lastMod);

Однако похоже, что некоторые сайты не имеют поля Last-Modified.

http://www.cbc.ca имеет следующие поля заголовка:

X-Origin-Server
Connection
Expires
null
Date
Server
Content-Type
Transfer-Encoding
Cache-Control

Я мог бы проанализировать страницу, чтобы попытаться получить ее дату, но это кажется большой болью.Какой стандарт?

(Если возможно, я бы хотел использовать URLConnection, потому что это то, что я использую для загрузки веб-страницы)

Ответы [ 2 ]

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

Стандартов нет. Динамически генерируемые веб-страницы обычно не имеют поля Last-Modified, и разные веб-страницы включают даты по-разному. Некоторые сайты даже не включают такую ​​дату, в том числе «© <текущий год>» внизу. Вы можете попытаться найти дату внизу или вверху, но надежно для извлечения даты из веб-страницы должно быть привязано к конкретному сайту.

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

С HTTP / 1.1: Определения полей заголовка :

14,29 Последнее изменение

Поле заголовка последней измененной сущности указывает дату и время, когда исходный сервер считает вариант последнее изменение.

   Last-Modified  = "Last-Modified" ":" HTTP-date

Примером его использования является

   Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

Точное значение этого поля заголовка зависит от реализации сервер происхождения и характер оригинальный ресурс. Для файлов это может быть только что измененной файловой системой время. Для субъектов с динамически включенные части, это может быть наиболее последние из набора времени последнего изменения для его составных частей. Для базы данных шлюзы, это может быть последнее обновление отметка времени записи. Для виртуальных объекты, это может быть в последний раз внутреннее состояние изменилось.

Исходный сервер НЕ ДОЛЖЕН отправлять Дата последнего изменения, позднее время сообщения сервера зарождение. В таких случаях, когда последняя модификация ресурса будет указать какое-то время в будущем, сервер ДОЛЖЕН заменить эту дату на дата создания сообщения.

Сервер происхождения ДОЛЖЕН получить Последнее изменение значения объекта как как можно ближе ко времени, когда генерирует значение Date своего ответ. Это позволяет получателю сделать точную оценку время модификации объекта, особенно если сущность меняется в ближайшее время что ответ генерируется.

HTTP / 1.1 серверы ДОЛЖНЫ отправить Последнее изменение, когда это возможно.

С этого момента Last-modified является необязательным, и его значение зависит от природы исходного ресурса.

...