日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

HTTP头信息中的参数Etag

發布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP头信息中的参数Etag 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
服務器如果是集群,不同服務器返回的 Http Header 中的 Etag 參數不一樣。如果是圖片是程序生成的,我們可以用 no-cache 這些 header 來控制,但如果這些圖片是 apache 或 nginx 等呢?
下面開始介紹 Etag:


?????? Etag在HTTP1.1中有介紹,主要的作用就是在(css file, image, javascript file)文件后面添加一個唯一的參數(相當于查詢參數字符串),Etag有服務器端生成,并且隨著文件的改變而改變,這樣瀏覽器端就會只重新請求獲取 Etag發生變化的文件,減少瀏覽器端數據的流量,加快瀏覽器的反應速度,重要的是減輕服務器端的壓力,所以服務器端Etag的實現就比較重要了。

現在我們有個問題為什么要使用Etag呢?

Etag主要為了解決Last-Modified無法解決的一些問題.他能比Last_Modified更加精確的知道文件是否被修改過.如果有個文件修改非常頻繁,比如在秒以下的時間內進行修改,比如1秒內修改了10次,If-Modified-Since能檢查只能秒級的修改,所以這種修改無法判斷.原因是UNIX記錄MTIME只能精確到秒.所以我們選擇生成Etag,因為Etag可以綜合Inode,MTime和Size,可以避免這個問題.

Etag的工作原理
Etag在服務器上生成后,客戶端通過If-Match或者說If-None-Match這個條件判斷請求來驗證資源是否修改。我們常見的是使用If-None-Match.請求一個文件的流程可能如下:
新的請求
客戶端發起HTTP GET請求一個文件(css ,image,js);服務器處理請求,返回文件內容和一堆Header(包括Etag,例如"2e681a-6-5d044840"),http頭狀態碼為為200.

同一個用戶第二次這個文件的請求
客戶端在一次發起HTTP GET請求一個文件,注意這個時候客戶端同時發送一個If-None-Match頭,這個頭中會包括上次這個文件的Etag(例如"2e681a- 6-5d044840"),這時服務器判斷發送過來的Etag和自己計算出來的Etag,因此If-None-Match為False,不返回200,返回304,客戶端繼續使用本地緩存;

注意.服務器又設置了Cache-Control:max-age和Expires時,會同時使用,也就是說在完全匹配If-Modified-Since和If-None-Match即檢查完修改時間和Etag之后,服務器才能返回304.

下面是在Apache中的Etag的配置

在Apache中設置Etag的支持比較簡單,只需要在apache的配置中加入下面的內容就可以了:

FileETag MTime Size

注解:FileETag指令配置了當文檔是基于一個文件時用以創建ETag(實體標簽)應答頭的文件的屬性(ETag的值用于進行緩沖管理以節約網絡帶寬)。ETag的值由文件的inode(索引節點)、大小、最后修改時間決定。FileETag指令可以讓您選擇(如果您想進行選擇)這其中哪些要素將被使用。主要關鍵字如下:

INode
文件的索引節點(inode)數
MTime
文件的最后修改日期及時間
Size
文件的字節數
All
所有存在的域,等價于:FileETag INode MTime Size
None
如果一個文檔是基于文件的,則不在應答中包含任何ETag頭

在大型多WEB集群時,使用ETag時有問題,所以有人建議使用WEB集群時不要使用ETag,其實很好解決, 因為多服務器時,INode不一樣,所以不同的服務器生成的ETag不一樣,所以用戶有可能重復下載(這時ETag就會不準),明白了上面的原理和設置后,解決方法也很容易,讓ETag后面二個參數,MTime和Size就好了.只要ETag的計算沒有INode參與計算,就會很準了.

如果動態程序要生成ETAG 也很簡單,如: $etag = ‘”‘ . md5($body) . ‘”‘;

總結

以上是生活随笔為你收集整理的HTTP头信息中的参数Etag的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。