一鞠评、什么是緩存Cache? 為什么要使用它?
一個(gè)使用緩存Cache的站點(diǎn)會(huì)監(jiān)聽客戶端向服務(wù)器端發(fā)出的請求驰凛,并保存服務(wù)器端的回應(yīng)——比如HTML頁面、圖片等文件交汤。接著雏赦,如果有另外一個(gè)使用相同URL發(fā)送請求,他能夠使用之前已經(jīng)保存下來的反饋文件芙扎,而不是再次向服務(wù)器發(fā)出請求星岗。
有兩個(gè)主要的理由讓人們使用緩存:
減少延遲— 因?yàn)樗l(fā)出的網(wǎng)頁請求是指向更接近客戶端的緩存而不再是源服務(wù)器端,因此請求所花費(fèi)時(shí)間更短戒洼,這讓網(wǎng)站看上去反應(yīng)更快俏橘。
降低網(wǎng)絡(luò)負(fù)荷— 因?yàn)榫彺嫖募梢灾貜?fù)使用,節(jié)省了不少的帶寬.這也給用戶省了不少流量.
二、Cache緩存分類
Cache緩存分為客戶端緩存和服務(wù)端緩存
服務(wù)端緩存又分為 代理服務(wù)器緩存 和 反向代理服務(wù)器緩存(也叫網(wǎng)關(guān)緩存圈浇,比如 Nginx反向代理寥掐、Squid等),其實(shí)廣泛使用的 CDN (快播貌似就是用的這個(gè))也是一種服務(wù)端緩存磷蜀,目的都是讓用戶的請求走”捷徑“召耘,并且都是緩存圖片、文件等靜態(tài)資源褐隆。
客戶端緩存一般指的是瀏覽器緩存污它,瀏覽器緩存控制機(jī)制有兩種:HTML Meta標(biāo)簽 vs. HTTP頭信息。目的就是加速各種靜態(tài)資源的訪問庶弃,想想現(xiàn)在的大型網(wǎng)站衫贬,隨便一個(gè)頁面都是一兩百個(gè)請求,每天 pv 都是億級(jí)別歇攻,如果沒有緩存祥山,用戶體驗(yàn)會(huì)急劇下降、同時(shí)服務(wù)器壓力和網(wǎng)絡(luò)帶寬都面臨嚴(yán)重的考驗(yàn)掉伏。
三、使用fiddler查看緩存
打開fiddler抓包澳窑,用瀏覽器打開百度網(wǎng)頁搜索fiddler查看緩存斧散,點(diǎn)擊搜索結(jié)果的第一條:fiddler怎么清除自身緩存_百度知道。抓包情況如下:
這里就是客戶端發(fā)出請求后摊聋,告訴服務(wù)器:“親鸡捐,我這沒緩存啊,您得發(fā)全部網(wǎng)頁數(shù)據(jù)過來哦~B椴谩箍镜!”源祈,隨后服務(wù)器返回:“200 OK”。
第一次請求后色迂,我們再次刷新(F5)下這個(gè)頁面香缺,抓包情況如下:
會(huì)看到左側(cè)區(qū)域,有很多304顯示(右側(cè)cache中已經(jīng)有了參數(shù))說明瀏覽器已經(jīng)使用了緩存數(shù)據(jù)歇僧。
四图张、服務(wù)器如何判斷緩存是否過期
Web服務(wù)器通過2種方式來判斷瀏覽器緩存是否是最新的。
第一種诈悍, 瀏覽器把緩存文件的最后修改時(shí)間通過 header ”If-Modified-Since“來告訴Web服務(wù)器祸轮。
第二種, 瀏覽器把緩存文件的ETag, 通過header "If-None-Match", 來告訴Web服務(wù)器侥钳。
五适袜、緩存是開發(fā)最大的敵人
先說說緩存的好處:
1. 減少了冗余的數(shù)據(jù)傳輸,節(jié)省了網(wǎng)費(fèi)舷夺。
2. 減少了服務(wù)器的負(fù)擔(dān)苦酱, 大大提高了網(wǎng)站的性能
3. 加快了客戶端加載網(wǎng)頁的速度
資料來源測試部落-萌貓君