簡體   English   中英

使用Java獲取頁面的上次修改日期

[英]Get a page's last modified date using Java

有沒有一種標准的方法來判斷頁面上次修改的時間? 目前我這樣做:

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,因為這是我用來下載網頁的)

沒有標准。 動態生成的網頁通常沒有Last-Modified字段,不同的網頁以不同的方式包含日期。 有些網站甚至沒有包含這樣的日期,包括底部的“©<當前年份>”。 您可以嘗試在底部或頂部附近查找日期,但可靠地從網頁中提取日期必須是特定於站點的。

HTTP / 1.1:標題字段定義

14.29最后修改

Last-Modified實體標題字段指示源服務器認為變體上次修改的日期和時間。

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

它的一個例子是

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

此標頭字段的確切含義取決於源服務器的實現和原始資源的性質。 對於文件,它可能只是文件系統上次修改時間。 對於具有動態包含部分的實體,它可能是其組成部分的最后一組最后修改時間。 對於數據庫網關,它可能是記錄的最后更新時間戳。 對於虛擬對象,它可能是內部狀態最后一次更改。

原始服務器不得發送比服務器發送消息的時間晚的Last-Modified日期。 在這種情況下,資源的最后修改將指示將來的某個時間,服務器必須用消息發起日期替換該日期。

原始服務器應該盡可能接近生成其響應的Date值的時間獲取實體的Last-Modified值。 這允許接收者准確評估實體的修改時間,特別是如果實體在生成響應的時間附近發生變化。

HTTP / 1.1服務器應該盡可能發送Last-Modified。

從這一點開始, Last-modified是可選的,其值取決於原始資源的性質。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM