2011-08-30 63 views
2

如果服務器上有XML文件。 有沒有辦法獲得它的版本或上次修改日期而無需下載文件並從中讀取它們?獲取XML文件的版本而不從服務器上下載它

基本上我想要做的是檢查文件是否比我的電腦上的文件更新版本下載它,如果沒有,請不要下載它。

我現在下載並檢查它的版本。但是如果它是相同版本或者具有相同的最後修改日期,我不想浪費時間下載。

+0

爲什麼這是一個XML文件相關?你認爲XML文件的最後修改日期可能不同嗎?另外,什麼樣的服務器? –

+1

您可以創建一個C#(或任何此語言的語言)通用處理程序(或腳本或頁面),它接受1個參數FileName(XML文件)並將最後修改日期寫入輸出。然後,如果日期捕捉到你的想象,你開始下載。 – Bazzz

+0

謝謝你的回答,但我的問題是如何獲得最後修改日期?它在哪裏被保存,以及如何得到它 – Youssef

回答

0

您可以爲C#(或任何此語言的語言)生成一個參數FileName(XML文件)並將最後修改日期寫入輸出的Generic Handler(或腳本或頁面)。然後,如果日期抓住你的想象力,你開始下載

這裏是一個通用處理器的例子(注意,可能還需要一些錯誤捕獲):

public void ProcessRequest(HttpContext context) 
{ 
context.Response.ContentType = "text/plain"; 
string fileName = context.Request.QueryString.Get("fileName"); 
FileInfo fileInfo = new FileInfo(Server.MapPath(".") + "/" + fileName); 
context.Response.Write(fileInfo.LastWriteTime.ToString()); 
} 
0

在Ruby On Rails中使用了一種技術來實現您要求的優化。
您可以編輯文件名並在末尾添加上次編輯的時間戳xmlname_ [TIMESTAMP] .xml。當客戶端需要文件時,如果它具有相同的文件名,則不會下載它。如果您的應用程序存在於瀏覽器中,那麼當客戶端需要該文件時,通過瀏覽器它不會下載將位於瀏覽器緩存中的新版本。
希望它有幫助

0

如果有服務器上的XML文件。有沒有辦法獲得它的版本或上次修改日期而無需下載文件並從中讀取它們?

不是這樣......

基本上我試圖做的是檢查,如果該文件是不是我的電腦上的一個下載更新的版本,如果不是,不下載它。

聽起來就像你想要標準的HTTP緩存控制。客戶端可以發送If-Modified-Since請求或檢查ETags。詳情請參閱mnot caching tutorial

0

您是否考慮過使用ETag作爲緩存機制?它是HTTP/1.1規範的一部分,並且強大的ETag可能是您正在查找的內容(假設您可以處理HTTP標頭)

您還可以使用If-Modified-Since請求標頭根據上次已知的修改日期進行條件查詢。

1

至少有兩種方法可以做到這一點。

第一個是對文件執行HEAD請求,而不是GET。 HEAD請求將返回文件名,上次修改日期,內容長度和其他一些內容。但它不下載文件。您可以查看上次修改日期並下載,如果它比您擁有的更新。

另一種方法是執行GET請求,並將對象的屬性設置爲當前文件的時間戳。如果服務器上的文件較新,它將被下載。否則,您將獲得狀態碼304(未修改)。