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

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

關于nginx的ETag的一些問題

關于nginx的ETag的一些問題

守著星空守著你 2018-07-23 23:13:14
關于nginx的Etag問題,nginx默認是有Etag的,但是問題就在于:無論你對源代碼做了什么改動,比如說改動了注釋,改動了空行什么的,ETag都會變。(但實際上,比如我改動了注釋,但是這個注釋可能對程序員很重要,對用戶來講是無所謂的,因此ETag是沒有必要變化的)而http權威指南中說Etag解決了這個問題:有些文檔可能被修改了,但所做修改并不重要,不需要讓世界范圍內的緩存都重裝數據(比如對拼寫或注釋的修改)。而nginx默認也加了前綴“W/”來標識弱驗證器那這樣的話ETag顯然沒有解決這個問題。由于筆者對nginx停留在僅供使用的階段,并沒有源碼查看和插件編寫的經歷,所以想問:nginx有沒有辦法配置或者現成的插件或者自定義增加一些內容,從而讓ETag并不是任意更改都變化,有一定的變通性?或者說 nginx有沒有辦法自定義ETag的生成規則?
查看完整描述

2 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

正確的做法就是不要依賴etag驗證文件是否被修改。
如果你要處理靜態文件緩存的問題,應該在網頁鏈接里加上特殊的請求參數好讓瀏覽器以為鏈接改變從而重新請求最新版文件

如果你想要修改注釋不引起etag變化,你應該配置好前端自動化流程,把生產環境運行的代碼和開發的代碼分開,然后一鍵壓縮混淆去注釋代碼發布到生產環境


查看完整回答
反對 回復 2018-07-26
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

這個最好不要去 nginx 那里去控制,可以在自動化構建的時候控制。比如,webpack 打包的時候就把注釋都給去掉。另外也不要通過 ETag 來協商緩存,通過 webpack 設置 hash 來強制緩存。

補充:為什么不使用 Etag

  1. 你所列舉的這種情況

  2. 協商緩存需要 304 ,仍需要發一次請求

  3. 負載均衡時,不同的物理機相同文件的 inode 不同,會生成不同的 ETag (未實測)


查看完整回答
反對 回復 2018-07-26
  • 2 回答
  • 0 關注
  • 1803 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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