最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

頁(yè)面緩存的范疇及原理

2022-08-03 19:56 作者:補(bǔ)給站Linux內(nèi)核  | 我要投稿

談到頁(yè)面性能優(yōu)化,緩存機(jī)制是其中非常重要的一環(huán)。緩存可以使頁(yè)面盡可能快地得到需要的文檔,具有減輕帶寬、降低服務(wù)的負(fù)荷、提高用戶體驗(yàn)等功能。隨著高級(jí)瀏覽器,尤其是移動(dòng)端的發(fā)展,可用的緩存范疇逐漸變大,簡(jiǎn)單地將其分為三類:

一、Application Cache

這是H5中的新特性,可以將頁(yè)面資源緩存在本地,當(dāng)頁(yè)面處于離線狀態(tài)下依然可以使用。使用方法很簡(jiǎn)單,大致分為2步:

但是目前來(lái)說(shuō),離線存儲(chǔ)存在一些坑,曾經(jīng)為了提高頁(yè)面性能,使用過(guò)該技術(shù),帶來(lái)了很多問(wèn)題,很快就刪除不再使用,簡(jiǎn)單總結(jié)下目前離線存儲(chǔ)的特點(diǎn):

  • 每個(gè)包含manifest的網(wǎng)頁(yè)都會(huì)隱式添加到appCache中

  • 一個(gè)文件找不到,整個(gè)appCache均被丟棄

  • 即使online,也會(huì)使用appCache

  • 更新頁(yè)面,appCache文件本身必須修改,才能讓瀏覽器刷新緩存文件

  • 關(guān)于appCache的缺點(diǎn)可以查看文檔:App cache is a Douchebag using the application cache

【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個(gè)人覺(jué)得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實(shí)戰(zhàn)項(xiàng)目及代碼)? ? ?


二、localStorage

在移動(dòng)端,這個(gè)API被廣泛使用,將一些長(zhǎng)期不會(huì)發(fā)生改變的資源、歷史記錄保存在本地,通過(guò)在本地讀取加速網(wǎng)頁(yè)的訪問(wèn)速度。需要注意的是localStorage只能存儲(chǔ)字符串,如果要緩存對(duì)象的話,需要通過(guò)JSON.stringify進(jìn)行轉(zhuǎn)換,使用的時(shí)候再進(jìn)行解析。常用API如下:


三、HTTP

談到緩存會(huì)默認(rèn)是HTTP緩存。首先看看HTTP緩存的大致流程:

在上圖展示了HTTP使用緩存的過(guò)程,其中(3)、(4)環(huán)節(jié)存在是否判斷,當(dāng)均為true的時(shí)候才會(huì)直接使用本地緩存,其他情況請(qǐng)看下圖。但是還是存在下面兩個(gè)疑問(wèn):

  1. 如何判斷是否足夠新鮮

  2. 如何進(jìn)行新鮮度驗(yàn)證?


3.1 文檔新鮮度判斷

在HTTP response中可能存在兩個(gè)屬性:Expires、Cache-Control,這兩個(gè)屬性決定了文檔的有效期。如果當(dāng)前時(shí)間滿足有效期,則直接讀取緩存文檔,返回給客戶端。

  1. 關(guān)于Expires: HTTP/1.0+定義該該屬性,存儲(chǔ)的是絕對(duì)日期,絕對(duì)日期依賴于計(jì)算機(jī)的時(shí)鐘時(shí)間。因?yàn)椴煌鳈C(jī)的時(shí)間中存在差異,所以使用Expires可能會(huì)造成一些問(wèn)題。

  2. 關(guān)于Cache-Control:HTTP/1.1中增加了該屬性,該屬性定義的時(shí)間是相對(duì)時(shí)間,因此就沒(méi)有Expires的問(wèn)題。Cache-Control存在如下幾個(gè)常用屬性

  • no-cache: 除非對(duì)資源進(jìn)行新鮮度檢驗(yàn),否則客戶端不會(huì)使用已緩存的資源

  • no-store: 緩存應(yīng)盡快從存儲(chǔ)器中刪除,因?yàn)榭赡艽嬖诿舾行畔?/p>

  • max-age=number: 緩存在number時(shí)間內(nèi)是新鮮的

3.2 新鮮度檢驗(yàn)

新鮮度檢驗(yàn)有兩種方式:If-Modified-Since、If-No-Match,這兩個(gè)數(shù)據(jù)存在于HTTP request Header中,通過(guò)與服務(wù)器端的對(duì)比來(lái)判斷文檔是否發(fā)生改變。

  1. If-Modified-Since:基于時(shí)間的比較,response Header與之對(duì)應(yīng)的是Last-Modified。

  2. If-No-Match:基于實(shí)體標(biāo)簽進(jìn)行比較,response Header與之對(duì)應(yīng)的是Etag

3.3 緩存控制設(shè)置

通過(guò)在服務(wù)器端進(jìn)行緩存的設(shè)置。以Apache為例,可以使用mod_headers、mod_expires、mod_cern_meta設(shè)置Expires或Cache-Control。





頁(yè)面緩存的范疇及原理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
松江区| 锦屏县| 郓城县| 绥芬河市| 榆社县| 鲁甸县| 武清区| 郁南县| 巩义市| 麦盖提县| 安宁市| 通河县| 西贡区| 方山县| 中阳县| 舞阳县| 南开区| 武陟县| 淳安县| 临邑县| 筠连县| 临洮县| 梅河口市| 涟源市| 高陵县| 高阳县| 武乡县| 海宁市| 泰和县| 伊川县| 南城县| 崇文区| 新津县| 虹口区| 张家界市| 安多县| 枣阳市| 台山市| 安乡县| 通山县| 锦州市|