簡體   English   中英

如何在Ruby下載之前獲取遠程文件的mtime?

[英]How to get a remote-file's mtime before downloading it in Ruby?

我有下面的代碼,它只是下載文件並保存。 我想每隔30秒運行一次並檢查遠程文件的mtime是否已更改,如果有,則將其下載。 為了這個目的,我將創建一個在無限循環的每次迭代后休眠30秒的線程,但是; 如何在不下載的情況下檢查遠程文件的mtime?

Net::HTTP.start($xmlServerHostname) { |http|
                resp = http.get($xmlServerPath+"levels.xml")
                open("levels.xml", "w") { |file|
                    file.write(resp.body)
                }
            }

在您執行http.get之前,請執行一個http.head它只請求頭文件而不下載正文(即文件內容),然后檢查Last Modified標頭的值是否已更改。

例如

resp = http.head(($xmlServerPath+"levels.xml")
last_modified = resp['last-modified']
if last_modified != previous_last_modified
  # file has changed
end

您可以嘗試使用格式正確的日期發送If-Modified-Since標頭。

如果服務器支持它,它可以僅回復304 Not Modified狀態(沒有任何內容)或完整內容(如果文件已被修改)。

暫無
暫無

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

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