自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于瀏覽器緩存,一次全部弄明白

存儲(chǔ) 存儲(chǔ)軟件
平時(shí)生活當(dāng)中緩存一集電視劇,下載一首歌;這些資源是可以直接離線觀看的,沒(méi)有去請(qǐng)求網(wǎng)絡(luò),資源在本地。

[[250907]]

什么是緩存

平時(shí)生活當(dāng)中緩存一集電視劇,下載一首歌;這些資源是可以直接離線觀看的,沒(méi)有去請(qǐng)求網(wǎng)絡(luò),資源在本地。

瀏覽器中的緩存又是什么

如上所說(shuō),緩存即是離線的資源;對(duì)于瀏覽器開(kāi)發(fā)者而言,緩存不是我們用瀏覽器下載了什么, 而是比如我們通過(guò)瀏覽器打開(kāi)過(guò)一個(gè)網(wǎng)頁(yè),這個(gè)網(wǎng)頁(yè)里面所包含的資源(圖片、css文件、js文件等)在無(wú)感知的情況下,緩存在了本地。

瀏覽器中緩存的步驟是什么樣的

我們知道瀏覽器會(huì)有緩存,那么是我們每次去打開(kāi)之前已經(jīng)打開(kāi)過(guò)的網(wǎng)站,都是用的緩存嗎?當(dāng)然不是!!!瀏覽器有一套協(xié)議來(lái)管理什么時(shí)候需要去請(qǐng)求服務(wù)器,什么時(shí)候使用本地緩存;這套協(xié)議就叫做緩存協(xié)議(緩存機(jī)制)。

一起來(lái)看一下這套機(jī)制的流程是什么樣的:

很隨意的來(lái)解釋一下這張圖:

1.瀏覽器發(fā)出請(qǐng)求,檢查本地是否有緩存;

2.如果有緩存,判斷緩存是否過(guò)期;

3.如果過(guò)期,向服務(wù)器發(fā)送驗(yàn)證當(dāng)前本地資源還是否可用,如果可用,返回狀態(tài)碼304,使用本地緩存。如果不可用,返回狀態(tài)碼200,并返回新資源,并把資源寫(xiě)入到緩存當(dāng)中。

4.如果沒(méi)有過(guò)期,直接載入緩存資源使用。

打開(kāi)瀏覽器開(kāi)發(fā)工具= >network;可以看到如下圖:

  • ***個(gè)資源是請(qǐng)求返回的新資源。
  • 第二個(gè)和第三個(gè)是讀取內(nèi)存當(dāng)中的資源,耗費(fèi)時(shí)間為0ms。
  • 后面幾個(gè)是讀取本地硬盤(pán)里面的緩存資源,讀取硬盤(pán)比較慢,所以有時(shí)間花銷,但總體是比請(qǐng)求網(wǎng)絡(luò)快的多。

怎么判斷是否有緩存

在***次請(qǐng)求頁(yè)面成功返回資源后,會(huì)記錄的每一個(gè)緩存文件與其url的對(duì)應(yīng)關(guān)系,存儲(chǔ)在本地,下一次再請(qǐng)求的時(shí)候,或者瀏覽器打開(kāi)之后,通過(guò)請(qǐng)求資源的url去匹配是否有對(duì)應(yīng)的資源;來(lái)確認(rèn)這個(gè)文件是否有緩存(此處并不能確認(rèn)文件是否已經(jīng)過(guò)期)。

怎么判斷***的緩存是否可用

通過(guò)上一步***緩存資源之后,首先會(huì)查看緩存協(xié)議的里的相關(guān)配置字段(Cache-Control、Expires);查看當(dāng)前緩存是否過(guò)期,是否還可用。

cache-control字段的含義

Expires字段

當(dāng)兩個(gè)字段都有的時(shí)候,會(huì)忽略掉Expires字段。

如果緩存資源不可用,怎么處理

根據(jù)配置,如果發(fā)現(xiàn)資源可用,終止請(qǐng)求,返回緩存資源;發(fā)現(xiàn)不可用時(shí)候,回發(fā)起網(wǎng)絡(luò)請(qǐng)求,在發(fā)起網(wǎng)絡(luò)請(qǐng)求的時(shí)候,回去查看是否存在Etag字段、Last-Modified字段;

1.如果沒(méi)有發(fā)現(xiàn)相關(guān)字段,直接發(fā)起請(qǐng)求,返回相關(guān)資源,寫(xiě)入緩存當(dāng)中;

2.如果發(fā)現(xiàn)了Etag、Last-Modified字段,附帶上相應(yīng)的字段內(nèi)容,發(fā)起請(qǐng)求,服務(wù)端會(huì)根據(jù)你發(fā)起的字段內(nèi)容做匹配,如果匹配成功,說(shuō)明在客戶端的緩存資源還是可用的,返回304。如果匹配失敗,服務(wù)端會(huì)返回200,并攜帶上相應(yīng)的資源文件。

那么Etag字段和Last-Modified字段又代表什么意思呢?他們的作用又是什么呢?

這兩個(gè)字段是在資源返回的時(shí)候請(qǐng)求header頭攜帶回來(lái)的。

Etag字段:表示請(qǐng)求資源在服務(wù)器的唯一標(biāo)識(shí),瀏覽器可以根據(jù)ETag值緩存數(shù)據(jù),下次請(qǐng)求的時(shí)候以If-None-Match字段請(qǐng)求。

Etag

Last-Modified字段:用于標(biāo)記請(qǐng)求資源的***一次修改時(shí)間。請(qǐng)求的時(shí)候以If-Modified-Since字段請(qǐng)求。

Last-Modified

If-Modified-Since

全部過(guò)程解析

以下是http緩存可能涉及到的所有的字段:

若有不足,還望斧正!

責(zé)任編輯:武曉燕 來(lái)源: 玄說(shuō)前端
相關(guān)推薦

2018-08-07 10:44:50

緩存技術(shù)瀏覽器

2020-12-29 09:56:29

瀏覽器緩存HTTP

2017-04-26 14:15:35

瀏覽器緩存機(jī)制

2019-12-27 10:24:43

瀏覽器底層DNS

2019-01-03 13:09:58

瀏覽器緩存原理

2011-05-06 09:36:16

動(dòng)態(tài)頁(yè)面

2021-06-01 09:12:47

前端瀏覽器緩存

2020-07-16 08:04:21

瀏覽器緩存策略

2021-08-02 13:05:49

瀏覽器HTTP前端

2019-02-15 15:15:59

ChromeJavascriptHtml

2017-05-15 13:40:20

瀏覽器http緩存機(jī)制

2020-10-29 11:04:28

緩存瀏覽器LocalStorag

2019-04-02 10:51:29

瀏覽器緩存前端

2018-11-30 09:00:19

html5cssjavascript

2017-08-24 17:37:18

DNS緩存分析

2010-05-31 10:11:02

2021-01-11 05:24:53

緩存服務(wù)器

2022-03-24 08:31:25

Web性能優(yōu)化瀏覽器緩存API封裝

2020-03-11 20:42:34

瀏覽器緩存機(jī)制

2019-08-16 10:54:03

本地存儲(chǔ)javascripthttp緩存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)