程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> HTTP的請求頭標簽If-Modified-Since

HTTP的請求頭標簽If-Modified-Since

編輯:關於ASP.NET

一直以來沒有留意過HTTP請求頭的IMS(If-Modified-Since)標簽。

最近在分析Squid的access.log日志文件時,發現了一個現象。

就是即使是對同一個文件進行HTTP請求,第一次和第二次產生的網絡流量數據也是不一致的。

在調查的過程中,逐漸了解了HTTP的If-Modified-Since的頭標簽的作用。

大家都知道客戶端浏覽器是有緩存的,裡面存放之前訪問過的一些網頁文件。

例如IE,會把緩存文件存到“C:\Documents and Settings\zh2000g\Local Settings\Temporary Internet Files”

這樣類似的目錄裡。

其實緩存裡存儲的不只是網頁文件,還有服務器發過來的該文件的最後服務器修改時間。

If-Modified-Since是標准的HTTP請求頭標簽,在發送HTTP請求時,把浏覽器端緩存頁面的最後修改時 間一起發到服務器去,服務器會把這個時間與服務器上實際文件的最後修改時間進行比較。

如果時間一致,那麼返回HTTP狀態碼304(不返回文件內容),客戶端接到之後,就直接把本地緩存文 件顯示到浏覽器中。

如果時間不一致,就返回HTTP狀態碼200和新的文件內容,客戶端接到之後,會丟棄舊文件,把新文件 緩存起來,並顯示到浏覽器中。

下面用一個簡單的小例子說明一下。

由於演示例子需要截取HTTP Request和Response的信息,我在這裡使用的工具是Fiddler。

感興趣的朋友可以到【http://www.fiddler2.com/Fiddler2/version.asp】去下載。

1.首先在服務器創建一個簡單的HTML文件,用浏覽器訪問一下,成功表示HTML頁面。Fiddler就會產生 下面的捕獲信息。

需要留意的是

(1)因為是第一次訪問該頁面,客戶端發請求時,請求頭中沒有If-Modified-Since標簽。

(2)服務器返回的HTTP狀態碼是200,並發送頁面的全部內容。

(3)服務器返回的HTTP頭標簽中有Last-Modified,告訴客戶端頁面的最後修改時間。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved