摘要:緩存瀏覽器先向網(wǎng)關(guān)發(fā)起請求,網(wǎng)關(guān)服務(wù)器后面對應(yīng)著一臺或多臺負載均衡源服務(wù)器,會根據(jù)它們的負載請求,動態(tài)將請求轉(zhuǎn)發(fā)到合適的源服務(wù)器上。雖然這種架構(gòu)負載均衡源服務(wù)器之間的緩存沒法共享,但卻擁有更好的處擴展性。
web緩存作用
減少網(wǎng)絡(luò)帶寬消耗
降低服務(wù)器壓力
減少網(wǎng)絡(luò)延遲,加快頁面打開速度
數(shù)據(jù)庫數(shù)據(jù)緩存:為了提供查詢的性能,會將查詢后的數(shù)據(jù)放到內(nèi)存中進行緩存,下次查詢時,直接從內(nèi)存緩存直接返回,提供響應(yīng)效率
代理服務(wù)器緩存:代理服務(wù)器是瀏覽器和源服務(wù)器之間的中間服務(wù)器,瀏覽器先向這個中間服務(wù)器發(fā)起Web請求,經(jīng)過處理后(比如權(quán)限驗證,緩存匹配等),再將請求轉(zhuǎn)發(fā)到源服務(wù)器。
CDN緩存:瀏覽器先向CDN網(wǎng)關(guān)發(fā)起Web請求,網(wǎng)關(guān)服務(wù)器后面對應(yīng)著一臺或多臺負載均衡源服務(wù)器,會根據(jù)它們的負載請求,動態(tài)將請求轉(zhuǎn)發(fā)到合適的源服務(wù)器上。雖然這種架構(gòu)負載均衡源服務(wù)器之間的緩存沒法共享,但卻擁有更好的處擴展性。從瀏覽器角度來看,整個CDN就是一個源服務(wù)器
瀏覽器端緩存
Web應(yīng)用層緩存
HTTP信息頭中包含Cache-Control:no-cache,pragma:no-cache,或Cache-Control:max-age=0等告訴瀏覽器不用緩存的請求
需要根據(jù)Cookie,認證信息等決定輸入內(nèi)容的動態(tài)請求是不能被緩存的
經(jīng)過HTTPS安全加密的請求
POST請求無法被緩存
HTTP響應(yīng)頭中不包含Last-Modified/Etag,也不包含Cache-Control/Expires的請求無法被緩存
Web開發(fā)者可以在HTML頁面的
節(jié)點中加入標(biāo)簽,代碼如下:上述代碼的作用是告訴瀏覽器當(dāng)前頁面不被緩存,每次訪問都需要去服務(wù)器拉取。使用上很簡單,但只有部分瀏覽器可以支持,而且所有緩存代理服務(wù)器都不支持,因為代理不解析HTML內(nèi)容本身。
緩存有關(guān)的HTTP消息報頭
Cache-Control與Expires的作用一致,都是指明當(dāng)前資源的有效期,控制瀏覽器是否直接從瀏覽器緩存取數(shù)據(jù)還是重新發(fā)請求到服務(wù)器取數(shù)據(jù)。只不過Cache-Control的選擇更多,設(shè)置更細致,如果同時設(shè)置的話,其優(yōu)先級高于Expires。
配置Last-Modified/ETag的情況下,瀏覽器再次訪問統(tǒng)一URI的資源,還是會發(fā)送請求到服務(wù)器詢問文件是否已經(jīng)修改,如果沒有,服務(wù)器會只發(fā)送一個304回給瀏覽器,告訴瀏覽器直接從自己本地的緩存取數(shù)據(jù);如果修改過那就整個數(shù)據(jù)重新發(fā)給瀏覽器;
Etag的出現(xiàn)主要是為了解決幾個Last-Modified比較難解決的問題:
Last-Modified標(biāo)注的最后修改只能精確到秒級,如果某些文件在1秒鐘以內(nèi),被修改多次的話,它將不能準(zhǔn)確標(biāo)注文件的新鮮度
如果某些文件會被定期生成,當(dāng)有時內(nèi)容并沒有任何變化,但Last-Modified卻改變了,導(dǎo)致文件沒法使用緩存
有可能存在服務(wù)器沒有準(zhǔn)確獲取文件修改時間,或者與代理服務(wù)器時間不一致等情形
Cache-Control/Expires的優(yōu)先級要高于Last-Modified/ETag。即當(dāng)本地副本根據(jù)Cache-Control/Expires發(fā)現(xiàn)還在有效期內(nèi)時,則不會再次發(fā)送請求去服務(wù)器詢問修改時間(Last-Modified)或?qū)嶓w標(biāo)識(Etag)了。
使用Cache-Control/Expires會配合Last-Modified/ETag一起使用,因為即使服務(wù)器設(shè)置緩存時間, 當(dāng)用戶點擊“刷新”按鈕時,瀏覽器會忽略緩存繼續(xù)向服務(wù)器發(fā)送請求,這時Last-Modified/ETag將能夠很好利用304,從而減少響應(yīng)開銷。
當(dāng)用戶在按F5進行刷新的時候,會忽略Expires/Cache-Control的設(shè)置,會再次發(fā)送請求去服務(wù)器請求,而Last-Modified/Etag還是有效的,服務(wù)器會根據(jù)情況判斷返回304還是200;而當(dāng)用戶使用Ctrl+F5進行強制刷新的時候,只是所有的緩存機制都將失效,重新從服務(wù)器拉去資源
總結(jié)一下瀏覽器請求的過程:
Etag發(fā)送過去的頭名字叫:If-None-Match
Last-Modified發(fā)送過去的頭名字叫:If-Modified-Since
參考文獻:
Web緩存機制系列
瀏覽器緩存機制
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/84041.html
摘要:緩存瀏覽器先向網(wǎng)關(guān)發(fā)起請求,網(wǎng)關(guān)服務(wù)器后面對應(yīng)著一臺或多臺負載均衡源服務(wù)器,會根據(jù)它們的負載請求,動態(tài)將請求轉(zhuǎn)發(fā)到合適的源服務(wù)器上。雖然這種架構(gòu)負載均衡源服務(wù)器之間的緩存沒法共享,但卻擁有更好的處擴展性。 web緩存作用 減少網(wǎng)絡(luò)帶寬消耗降低服務(wù)器壓力減少網(wǎng)絡(luò)延遲,加快頁面打開速度 Web緩存的類型 數(shù)據(jù)庫數(shù)據(jù)緩存:為了提供查詢的性能,會將查詢后的數(shù)據(jù)放到內(nèi)存中進行緩存,下次查詢時,直...
摘要:緩存服務(wù)器是代理服務(wù)器的一種,并歸類在緩存代理類型中。若判斷緩存失效,緩存服務(wù)器將會再次從源服務(wù)器上獲取新資源。另外,和緩存服務(wù)器相同的一點是,當(dāng)判定緩存過期后,會向源服務(wù)器確認資源的有效性。 與 HTTP 協(xié)作的 Web 服務(wù)器 一臺 Web 服務(wù)器可搭建多個獨立域名的 Web 網(wǎng)站,也可作為通信路徑上的中轉(zhuǎn)服務(wù)器提升傳輸效率。 一. 用單臺虛擬主機實現(xiàn)多個域名 HTTP/1.1 規(guī)...
摘要:緩存服務(wù)器是代理服務(wù)器的一種,并歸類在緩存代理類型中。若判斷緩存失效,緩存服務(wù)器將會再次從源服務(wù)器上獲取新資源。另外,和緩存服務(wù)器相同的一點是,當(dāng)判定緩存過期后,會向源服務(wù)器確認資源的有效性。 與 HTTP 協(xié)作的 Web 服務(wù)器 一臺 Web 服務(wù)器可搭建多個獨立域名的 Web 網(wǎng)站,也可作為通信路徑上的中轉(zhuǎn)服務(wù)器提升傳輸效率。 一. 用單臺虛擬主機實現(xiàn)多個域名 HTTP/1.1 規(guī)...
閱讀 3394·2021-11-22 14:44
閱讀 2615·2019-08-30 14:10
閱讀 2713·2019-08-30 13:12
閱讀 1276·2019-08-29 18:36
閱讀 1414·2019-08-29 16:16
閱讀 3390·2019-08-26 10:33
閱讀 1870·2019-08-23 18:16
閱讀 434·2019-08-23 18:12