我們有一個通過HTTP獲取資源的Java進程。即使在客戶端修改後,我發現一個資源仍然無法正確提取。深入研究我發現在服務器上進程運行資源的Last-Modified日期與我在瀏覽器中查看信息時看到的不一致。然後我試着從另一臺服務器上取出它,我的筆記本電腦和這兩臺顯示的都是正確的日期。Http HEAD在不同的服務器上爲同一資源返回不同的Last-Modified日期,爲什麼?
我已經補丁過程,以允許選項忽略頭部日期的情況下,當它存在(但將不正確),但我真的很想知道爲什麼發生這種情況。
此處參考的是來自服務器的返回錯誤信息的curl響應。
HTTP/1.1 200 OK
Server: Sun-ONE-Web-Server/6.1
Date: Fri, 23 Sep 2011 14:16:57 GMT
Content-length: 132
Content-type: text/plain
Last-modified: Wed, 15 Sep 2010 21:58:20 GMT
Etag: "84-4c91417c"
Accept-ranges: bytes
然後在不同的服務器上相同的請求(也讓我的機器上的相同的結果)
HTTP/1.1 200 OK
Server: Sun-ONE-Web-Server/6.1
Date: Fri, 23 Sep 2011 14:18:47 GMT
Content-length: 132
Content-type: text/plain
Last-modified: Fri, 23 Sep 2011 01:20:43 GMT
Etag: "84-4e7bdeeb"
Accept-ranges: bytes
兩個服務器都在Fedora 10上運行
任何人都可以提供一些線索對我而言,我如何能夠解決這個長期問題?
嗨,對不起,我一直很忙,沒有檢查這個。我不熟悉在服務器上運行的任何緩存,我不得不嘗試深入瞭解。你知道Linux機器上默認運行的任何服務嗎?至於有問題的資源,它只是託管在第三方Web服務器上的文件系統上的文本文件。 –
它是什麼類型的文件系統(像NFS這樣的網絡)?你如何訪問該文件?我想知道爲什麼使用Sun-ONE-Web-Server。默認情況下,大多數Linux發行版都附帶Apache。你自己安裝了嗎?也許你可以告訴更多你的需求(你是否簡單地通過HTTP「隧穿」文件內容)? –
它來自Sun Web服務器,因爲我們正在提取的文件位於第三方網站上。這只是一個文本文件,存在於他們的Web服務器上。正如我所提到的,我們有一個定期讀取此文件的Java進程,但即使使用CURL從命令行中獲取文件頭信息,我也會得到相同的舊頭文件日期。所以這不能與Apache有任何關係,我不認爲它甚至不在該服務器上運行。我想也許你的意思是有一些通用的緩存過程,這是我可能不熟悉的Linux過程。 –