成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

HTTP CACHE 中的ETAG,LAST_MODIFY,MAX-AGE實(shí)驗(yàn)

RayKr / 996人閱讀

摘要:稍后的里有比較詳細(xì)的說明我們常用的就是和一起來用,上代碼這樣做的好處是雙重驗(yàn)證,同時(shí)滿足兩者條件才會(huì)緩存失效,彌補(bǔ)了的粒度最多為秒的問題以及的打開關(guān)閉即更改時(shí)間的問題。防止的就是代理服務(wù)器等自作聰明,認(rèn)為沒有過期。

用世界上最好的語言演示一下etag

第一次請求,服務(wù)器返回200.我分別列下請求頭【RequsetHeaders】和響應(yīng)頭【ResponseHeaders】

請求頭

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Host:kache.com
Pragma:no-cache
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.

響應(yīng)頭

Request URL:http://kache.com/etag.php
Request Method:GET
Status Code:200 OK
Remote Address:127.0.0.1:80

Connection:Keep-Alive
Content-Type:text/html
Date:Tue, 07 Mar 2017 13:02:13 GMT
Etag:966aa4bd5183fd9358fd222647c5c6a3
Keep-Alive:timeout=5, max=99
Server:Apache/2.4.10 (Win32) OpenSSL/0.9.8zb mod_fcgid/2.3.9
Transfer-Encoding:chunked
X-Powered-By:PHP/5.4.33

需要注意第一次請求頭沒有If-None-Match:,注意第一次響應(yīng)頭有Etag:這個(gè)標(biāo)簽,注意第一次是200


第二次請求

請求頭:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Host:kache.com
If-None-Match:966aa4bd5183fd9358fd222647c5c6a3
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

響應(yīng)頭:

Request URL:http://kache.com/etag.php
Request Method:GET
Status Code:304 Not Modified
Remote Address:127.0.0.1:80

Connection:Keep-Alive
Date:Tue, 07 Mar 2017 13:02:16 GMT
Keep-Alive:timeout=5, max=98
Server:Apache/2.4.10 (Win32) OpenSSL/0.9.8zb mod_fcgid/2.3.9

需要注意第二次請求頭有If-None-Match:,注意第二次響應(yīng)為304


再用php語言演示一下Last-Modified

If-Modified-Since[請求頭的] 和 Last-Modified [響應(yīng)頭的]這一對關(guān)系的HADER頭我這里就不貼了。稍后的ppt里有比較詳細(xì)的說明


我們常用的就是Last-Modified和Etag一起來用,上php代碼

這樣做的好處是雙重驗(yàn)證,同時(shí)滿足兩者條件才會(huì)緩存失效,彌補(bǔ)了modify的粒度最多為秒的問題以及modify的打開關(guān)閉即更改時(shí)間的問題。當(dāng)然etag也會(huì)有坑,不同物理機(jī)可能會(huì)導(dǎo)致相同文件不同結(jié)果(沒實(shí)驗(yàn)過)


直接上NGINX配置示例

畢竟php做服務(wù)端水平有限,大家可以參考 swoole framework OR workerman中對etag和modify的處理。

不多說,上NGINX配置段,為了演示modify ,可以在/etc/nginx/nginx.conf中把etag關(guān)閉

http {

        ##
        # Basic Settings
        ##
        etag  off;
        ...

關(guān)于其他靜態(tài)文件緩存的設(shè)置

location ~* .(?:css)$ {
  #expires 1y;
  add_header  Cache-Control max-age=5;
  add_header Cache-Control "public";
  add_header  Last-Modified "";
}

簡單對以上括號(hào)內(nèi)代碼說明:

expires 1y; 是http協(xié)議1.0寫法,1.1對應(yīng)的是cache-contorl:max-age="";前者為GMT絕對時(shí)間,后者為相對時(shí)間。

add_header Cache-Control max-age=5; 緩存5秒,如果沒有Last-Modified(即設(shè)置了 add_header Last-Modified "";) ,期間會(huì)一直直接請求服務(wù)器,服務(wù)器一直返回200,如果有設(shè)置Last-Modified,5秒后會(huì)請求一次服務(wù)器,5秒前會(huì)返回304.

簡單歸納Last-Modified和max-age(expires)關(guān)系

如果設(shè)置了max-age=0,而沒有啟用modify,那么不會(huì)緩存

如果單單啟用modify,而沒有max-age==0.也會(huì)緩存

如果啟用了modify,并且 max-age=0,那么不會(huì)緩存

如果設(shè)置了max-age=1000,但沒有啟用modify ,不會(huì)緩存

再此說明上面配置導(dǎo)致的結(jié)果:5秒內(nèi)如果文件有變化,那么客戶端不會(huì)有任何感知。5秒后將會(huì)重新發(fā)起請求,得到200響應(yīng)。然后再緩存5秒【注意沒有開啟etag】


下面這個(gè)例子和上面一樣,是針對圖片等,緩存1一個(gè)月,即使服務(wù)端刪除了,1個(gè)月內(nèi)也會(huì)正常顯示(除非ctrl+f5,或者服務(wù)端重啟了)public代表任何代理服務(wù)器都可以緩存,對應(yīng)的為private,只允許客戶端瀏覽器緩存。

location ~* .(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
  expires 1M;
  add_header Cache-Control "public";
  add_header  Last-Modified "";
}

那需要有更改就更新,怎么辦?
location ~* .(?:css)$ {
  expires 1y;
 # add_header  Cache-Control max-age=5;
 # add_header Cache-Control "public";
 # add_header  Last-Modified "";
}

以上配置雖然過期時(shí)間是一年,但是服務(wù)端會(huì)返回Last-Modified,來確認(rèn),意思為你就vim了一下xx.css,即使沒有做任何更改,瀏覽器也會(huì)重新發(fā)起請求。你要是沒改,那八成就一年后見了。

那我就不想緩存怎么辦?

用cache-control:控制
用no-cahce【瀏覽器端等可以緩存,但是沒有什么卵用】
用no-store【瀏覽器端等不用緩存,不用費(fèi)勁。每次都跟我服務(wù)端請求】
用must-revalidate,瀏覽器端別整沒用的,到期了就馬上跟我請求。麻溜的必須。防止的就是代理服務(wù)器等自作聰明,認(rèn)為沒有過期。

location ~* .(?:js)$ {
  add_header  Cache-Control no-cache;
  add_header  Cache-Control must-revalidate;
}
測試代碼和PPT在這里

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/61838.html

相關(guān)文章

  • HTTP緩存機(jī)制詳解

    摘要:在此,我會(huì)嘗試用簡單明了的文字,像大家系統(tǒng)的介紹緩存機(jī)制,期望對各位正確的理解前端緩存有所幫助。兩類緩存規(guī)則可以同時(shí)存在,強(qiáng)制緩存優(yōu)先級(jí)高于對比緩存,也就是說,當(dāng)執(zhí)行強(qiáng)制緩存的規(guī)則時(shí),如果緩存生效,直接使用緩存,不再執(zhí)行對比緩存規(guī)則。 前言 在請求一個(gè)靜態(tài)文件的時(shí)候(圖片,css,js)等,這些文件的特點(diǎn)是文件不經(jīng)常變化,將這些不經(jīng)常變化的文件存儲(chǔ)起來,對客戶端來說是一個(gè)優(yōu)化用戶瀏覽體...

    tinna 評(píng)論0 收藏0
  • HTTP緩存機(jī)制詳解

    摘要:在此,我會(huì)嘗試用簡單明了的文字,像大家系統(tǒng)的介紹緩存機(jī)制,期望對各位正確的理解前端緩存有所幫助。兩類緩存規(guī)則可以同時(shí)存在,強(qiáng)制緩存優(yōu)先級(jí)高于對比緩存,也就是說,當(dāng)執(zhí)行強(qiáng)制緩存的規(guī)則時(shí),如果緩存生效,直接使用緩存,不再執(zhí)行對比緩存規(guī)則。 前言 在請求一個(gè)靜態(tài)文件的時(shí)候(圖片,css,js)等,這些文件的特點(diǎn)是文件不經(jīng)常變化,將這些不經(jīng)常變化的文件存儲(chǔ)起來,對客戶端來說是一個(gè)優(yōu)化用戶瀏覽體...

    yzzz 評(píng)論0 收藏0
  • web性能優(yōu)化之:no-cache與must-revalidate深入探究

    摘要:本文僅挑這兩個(gè)進(jìn)行值進(jìn)行探究對比。注意變化了,表示源服務(wù)器資源已發(fā)生變化。從日志來看,緩存服務(wù)器訪問源服務(wù)器,并返回給瀏覽器。緩存服務(wù)器上已有該資源副本,且該副本未過期。緩存服務(wù)器本身優(yōu)化算法對實(shí)驗(yàn)結(jié)果的影響。 引言 稍微了解HTTP協(xié)議的前端同學(xué),想必對Cache-Control不會(huì)感到陌生,性能優(yōu)化時(shí)經(jīng)常都會(huì)跟它打交道。 常見的值有有private、public、no-store、...

    alexnevsky 評(píng)論0 收藏0
  • 緩存淺析

    摘要:概念緩存是一種保存資源副本并在下次請求時(shí)直接使用該副本的技術(shù)。緩存能緩解服務(wù)器壓力,提高響應(yīng)速度,提升用戶體驗(yàn)。以下討論的緩存是針對對資源而言的,且緩存策略都是依靠報(bào)文的首部來實(shí)現(xiàn)。參考緩存控制小結(jié)淺談瀏覽器的緩存機(jī)制 概念 緩存是一種保存資源副本并在下次請求時(shí)直接使用該副本的技術(shù)。——MDN 緩存能緩解服務(wù)器壓力,提高響應(yīng)速度,提升用戶體驗(yàn)。 以下討論的緩存是針對對img/scrip...

    Shonim 評(píng)論0 收藏0
  • 緩存淺析

    摘要:概念緩存是一種保存資源副本并在下次請求時(shí)直接使用該副本的技術(shù)。緩存能緩解服務(wù)器壓力,提高響應(yīng)速度,提升用戶體驗(yàn)。以下討論的緩存是針對對資源而言的,且緩存策略都是依靠報(bào)文的首部來實(shí)現(xiàn)。參考緩存控制小結(jié)淺談瀏覽器的緩存機(jī)制 概念 緩存是一種保存資源副本并在下次請求時(shí)直接使用該副本的技術(shù)。——MDN 緩存能緩解服務(wù)器壓力,提高響應(yīng)速度,提升用戶體驗(yàn)。 以下討論的緩存是針對對img/scrip...

    VishKozus 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<