亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ETag vs標頭過期

ETag vs標頭過期

瀟瀟雨雨 2019-12-07 13:32:07
我環顧四周,但無法弄清楚是否應該同時使用ETag 和 Expires Header 或兩者之一。我要做的是確保我的Flash文件(以及其他圖像,以及不僅在這些文件發生更改時得到更新)。我不想做任何特別的事情,例如更改文件名或在URL的末尾添加一些奇怪的字符,以使其不被緩存。另外,我到底需要在PHP腳本中以編程方式來做些什么來支持這一點,還是全部都是Apache?
查看完整描述

3 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

它們略有不同-ETag沒有客戶端可以用來確定將來是否再次請求該文件的任何信息。如果只有ETag,它將始終必須發出請求。但是,當服務器從客戶端請求中讀取ETag時,服務器可以確定是發送文件(HTTP 200),還是告訴客戶端僅使用其本地副本(HTTP 304)。ETag基本上只是文件的校驗和,當文件內容更改時,ETag在語義上也會更改。

客戶端(和代理/緩存)使用Expires標頭來確定它是否甚至根本不需要向服務器發出請求。您離Expires日期越近,客戶端(或代理)從服務器向該文件發出HTTP請求的可能性就越大。

因此,您真正想做的就是使用BOTH標頭-根據內容的更改頻率將Expires標頭設置為合理的值。然后配置要發送的ETag,以便客戶端將請求發送到服務器時,它可以更輕松地確定是否將文件發送回。

關于ETag的最后一點說明-如果您在多臺運行Apache的計算機上使用負載平衡的服務器設置,則可能需要關閉ETag生成。這是因為inode用作ETag哈希算法的一部分,這在服務器之間會有所不同。您可以將Apache配置為不將inode用作計算的一部分,但隨后您要確保文件上的時間戳完全相同,以確保為所有服務器生成相同的ETag。


查看完整回答
反對 回復 2019-12-07
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

Expires并且Cache-Control是“強緩存頭”

Last-Modified并且ETag是“弱緩存頭”

首先,瀏覽器檢查Expires/Cache-Control以確定是否向服務器發出請求

如果必須發出請求,它將發送Last-Modified/ETagHTTP請求。如果Etag文檔的值與之匹配,則服務器將發送304代碼而不是200,并且沒有內容。瀏覽器將從其緩存中加載內容。


查看完整回答
反對 回復 2019-12-07
  • 3 回答
  • 0 關注
  • 452 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號