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

資訊專欄INFORMATION COLUMN

一篇文章理解Web緩存

tangr206 / 871人閱讀

摘要:的數(shù)據(jù)將一直保存在瀏覽器內(nèi),直到用戶清除瀏覽器緩存數(shù)據(jù)為止。它也是一個(gè)被標(biāo)準(zhǔn)廢棄的功能,主要是通過文件來標(biāo)注要被緩存的靜態(tài)文件清單。盡管也有文件,但是與應(yīng)用緩存卻完全不同。另外,用來控制緩存的使用。

最近把前端緩存重新整理了一下,從整體的層面上把前端所有能用的緩存方案梳理了一遍。同時(shí),對(duì)于http緩存,使用了表格的方案,使得原先晦澀難記的特性變得清晰明了。特記錄于此,若有什么欠缺,也望不吝指出。
1. 前端緩存概述

前端緩存主要是分為HTTP緩存和瀏覽器緩存。其中HTTP緩存是在HTTP請(qǐng)求傳輸時(shí)用到的緩存,主要在服務(wù)器代碼上設(shè)置;而瀏覽器緩存則主要由前端開發(fā)在前端js上進(jìn)行設(shè)置。下面會(huì)分別具體描述。

2. 前端緩存分類 2.1 HTTP緩存
整體流程:HTTP緩存都是從第二次請(qǐng)求開始的。
第一次請(qǐng)求資源時(shí),服務(wù)器返回資源,并在respone header頭中回傳資源的緩存參數(shù);第二次請(qǐng)求時(shí),瀏覽器判斷這些請(qǐng)求參數(shù),擊中強(qiáng)緩存就直接200,否則就把請(qǐng)求參數(shù)加到request header頭中傳給服務(wù)器,看是否擊中協(xié)商緩存,擊中則返回304,否則服務(wù)器會(huì)返回新的資源。

HTTP緩存分為強(qiáng)緩存和協(xié)議緩存,它們的區(qū)別如下:

 200 from disk or 200 from memory :
強(qiáng)緩存的200也有兩種情況:200 from disk和200 from memory?,F(xiàn)在我沒有找到明確的文檔來描述這種區(qū)別的發(fā)生條件。知乎這個(gè)問題中提到了一些情景,可以自行取用。
2.1.1 強(qiáng)緩存

2.1.2 協(xié)商緩存

協(xié)商緩存都是成對(duì)出現(xiàn)的。

2.1.3 最佳優(yōu)化策略-消滅304
最佳優(yōu)化策略:因?yàn)閰f(xié)商緩存本身也有http請(qǐng)求的損耗,所以最佳優(yōu)化策略是要盡可能的將靜態(tài)文件存儲(chǔ)為較長的時(shí)間,多利用強(qiáng)緩存而不是協(xié)商緩存,即消滅304。

但是給文件設(shè)置一個(gè)很長的Cacha-Control也會(huì)帶來其他的問題,最主要的問題是靜態(tài)內(nèi)容更新時(shí),用戶不能及時(shí)獲得更新的內(nèi)容。這時(shí)候就要使用hash的方法對(duì)文件進(jìn)行命名,通過每次更新不同的靜態(tài)文件名來消除強(qiáng)緩存的影響。

Hash命名:
http://xxx.com/main.5eas34fa.js
http://xxx.com/main.js?5eas34fa
http://xxx.com/5eas34fa/main.js
2.2 瀏覽器緩存 2.2.1 本地存儲(chǔ)小容量

Cookie主要用于用戶信息的存儲(chǔ),Cookie的內(nèi)容可以自動(dòng)在請(qǐng)求的時(shí)候被傳遞給服務(wù)器。
LocalStorage的數(shù)據(jù)將一直保存在瀏覽器內(nèi),直到用戶清除瀏覽器緩存數(shù)據(jù)為止。
SessionStorage的其他屬性同LocalStorage,只不過它的生命周期同標(biāo)簽頁的生命周期,當(dāng)標(biāo)簽頁被關(guān)閉時(shí),SessionStorage也會(huì)被清除。

2.2.2 本地存儲(chǔ)大容量

WebSql和IndexDB主要用在前端有大容量存儲(chǔ)需求的頁面上,例如,在線編輯瀏覽器或者網(wǎng)頁郵箱。

2.2.3 應(yīng)用緩存與PWA

應(yīng)用緩存全稱為Offline Web Application,它的緩存內(nèi)容被存在瀏覽器的Application Cache中。它也是一個(gè)被W3C標(biāo)準(zhǔn)廢棄的功能,主要是通過manifest文件來標(biāo)注要被緩存的靜態(tài)文件清單。但是在緩存靜態(tài)文件的同時(shí),也會(huì)默認(rèn)緩存html文件。這導(dǎo)致頁面的更新只能通過manifest文件中的版本號(hào)來決定。而且,即使我們更新了version,用戶的第一次訪問還是會(huì)訪問到老的頁面,只有下一次再訪問才能訪問到新的頁面。所以,應(yīng)用緩存只適合那種常年不變化的靜態(tài)網(wǎng)站。如此的不方便,也是被廢棄的重要原因。

PWA全稱是漸進(jìn)式網(wǎng)絡(luò)應(yīng)用,主要目標(biāo)是實(shí)現(xiàn)web網(wǎng)站的APP式功能和展示。盡管PWA也有manifest文件,但是與應(yīng)用緩存卻完全不同。不同于manifest簡單的將文件通過是否緩存進(jìn)行分類,PWA用manifest構(gòu)建了自己的APP骨架。另外,PWA用Service Worker來控制緩存的使用。這一塊的內(nèi)容較多,在這里就不詳細(xì)展開了。

2.2.4 往返緩存

往返緩存又稱為BFCache,是瀏覽器在前進(jìn)后退按鈕上為了提升歷史頁面的渲染速度的一種策略。BFCache會(huì)緩存所有的DOM結(jié)構(gòu),但是問題在于,一些頁面開始時(shí)進(jìn)行的上報(bào)或者請(qǐng)求可能會(huì)被影響。這個(gè)問題現(xiàn)在主要會(huì)出現(xiàn)在微信h5的開發(fā)中。

去除BFCache有多種方法,但不是本文的重點(diǎn),想了解的同學(xué)可以看《瀏覽器往返緩存(Back/Forward cache)問題的分析與解決》

總結(jié)

本文梳理了前端所有可能涉及的緩存,希望能從整體層面建立起系統(tǒng)的緩存知識(shí)體系。限于篇幅,每一部分的描述都比較簡略,僅起到拋磚引玉之用。如有錯(cuò)誤,還望指出。

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

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

相關(guān)文章

  • 文章理解Web緩存

    摘要:的數(shù)據(jù)將一直保存在瀏覽器內(nèi),直到用戶清除瀏覽器緩存數(shù)據(jù)為止。它也是一個(gè)被標(biāo)準(zhǔn)廢棄的功能,主要是通過文件來標(biāo)注要被緩存的靜態(tài)文件清單。盡管也有文件,但是與應(yīng)用緩存卻完全不同。另外,用來控制緩存的使用。 最近把前端緩存重新整理了一下,從整體的層面上把前端所有能用的緩存方案梳理了一遍。同時(shí),對(duì)于http緩存,使用了表格的方案,使得原先晦澀難記的特性變得清晰明了。特記錄于此,若有什么欠缺,也望...

    zlyBear 評(píng)論0 收藏0
  • [譯]理解Service Workers

    摘要:而一個(gè)文件名表明將只捕獲在下的請(qǐng)求。包含請(qǐng)求主體其被包含在對(duì)象中。該方法將首先緩存響應(yīng)但隨后在后臺(tái)網(wǎng)絡(luò)請(qǐng)求。被用來提供響應(yīng)針對(duì)請(qǐng)求。一旦這個(gè)異步操作完成后操作將終止。 翻譯:jsdt原文標(biāo)題:Understanding Service Workers原文鏈接:http://blog.88mph.io/2017/07/...聲明:轉(zhuǎn)載請(qǐng)指明出處。 在網(wǎng)絡(luò)早期,很難想象在用戶離線的時(shí)候一個(gè)...

    luxixing 評(píng)論0 收藏0
  • 徹底理解從輸入U(xiǎn)RL與頁面展現(xiàn)

    摘要:五瀏覽器繪制網(wǎng)頁繪制過程主要是結(jié)構(gòu)與樣式的結(jié)合,以及行為動(dòng)態(tài)效果的展現(xiàn)。之后會(huì)寫系列文章,歡迎圍觀主要參考文章基礎(chǔ)進(jìn)階詳解與編碼前端面試題從到頁面展現(xiàn),這之中發(fā)生了什么圖解 流程概述: 地址欄輸入U(xiǎn)RL ——> 域名解析 ——> 服務(wù)器處理請(qǐng)求 ——> 瀏覽器處理響應(yīng) ——> 瀏覽器繪制網(wǎng)頁 一.地址欄輸入U(xiǎn)RL 認(rèn)識(shí)URL showImg(https://segmentfault....

    abson 評(píng)論0 收藏0
  • 前端優(yōu)化 - 收藏集 - 掘金

    摘要:雖然有著各種各樣的不同,但是相同的是,他們前端優(yōu)化不完全指南前端掘金篇幅可能有點(diǎn)長,我想先聊一聊閱讀的方式,我希望你閱讀的時(shí)候,能夠把我當(dāng)作你的競爭對(duì)手,你的夢(mèng)想是超越我。 如何提升頁面渲染效率 - 前端 - 掘金Web頁面的性能 我們每天都會(huì)瀏覽很多的Web頁面,使用很多基于Web的應(yīng)用。這些站點(diǎn)看起來既不一樣,用途也都各有不同,有在線視頻,Social Media,新聞,郵件客戶端...

    VincentFF 評(píng)論0 收藏0
  • 前端基礎(chǔ)

    摘要:談起閉包,它可是兩個(gè)核心技術(shù)之一異步基于打造前端持續(xù)集成開發(fā)環(huán)境本文將以一個(gè)標(biāo)準(zhǔn)的項(xiàng)目為例,完全拋棄傳統(tǒng)的前端項(xiàng)目開發(fā)部署方式,基于容器技術(shù)打造一個(gè)精簡的前端持續(xù)集成的開發(fā)環(huán)境。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老鳥,不論是面試求職,還是日...

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

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

0條評(píng)論

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