欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

前端學(xué)習(xí)25 瀏覽器緩存(強緩存、協(xié)商緩存)和本地緩存

瀏覽器緩存是性能優(yōu)化的一個非常重要的指標(biāo),而前端緩存也是我們在開發(fā)中必不可少的模塊。

1.瀏覽器緩存

1.1 緩存流程

通常來說,瀏覽器首次加載資源會返回200,并且下載服務(wù)器文件,緩存資源及版本號,再次加載資源的時候就可根據(jù)資源請求頭字段(強緩存&協(xié)商緩存)去判斷是否使用緩存資源。HTTP Cache 是我們開發(fā)中接觸最多的緩存,它分為強緩存和協(xié)商緩存。

  • 強緩存:直接從本地副本比對讀取請求頭,不去請求服務(wù)器,返回的狀態(tài)碼是200。
  • 協(xié)商緩存:會去服務(wù)器對比,若梅該百年才直接讀取本地緩存,返回的狀態(tài)碼為304。

1.2 強緩存(expires\Cache-Control

強緩存就是像瀏覽器緩存中查找該請求內(nèi)容,并根據(jù)該結(jié)果的緩存規(guī)則來決定是否適用該緩存結(jié)果的過程。強緩存是利用http的返回頭中的 Expires 和 Cache-Control 兩個字段來控制的,用來表示資源的緩存時間。

Expires:這是HTTP 1.0 的字段,表示緩存到期事件,是一個絕對時間(當(dāng)前時間+緩存時間),當(dāng)客戶端和服務(wù)端時間不一致時,會存在問題。

Cache-Control:HTTP 1.1 新增字段,他是一個相對時間,主要是利用該字段的max-age值來進行判斷,例如:Cache-Control:max-age=3600 ,表示著資源的有效期為3600秒。

Cache-Control幾個常見的設(shè)置值:

  • no-cache:不使用本地緩存。需要使用緩存協(xié)商,咸魚服務(wù)器確認(rèn)返回的相應(yīng)是否被更改,如果之前的相應(yīng)中存在ETag,那么請求的時候會與服務(wù)端驗證,如果資源未被修改,則可以避免重新下載。
  • no-store:直接禁止瀏覽器緩存數(shù)據(jù),每次用戶請求該資源,都會向服務(wù)器發(fā)送一個請求,每次都會下載完整的內(nèi)容。
  • public:可以被所有的用戶緩存,包括終端用戶和CDN等中間代理服務(wù)器。
  • private:只能被終端用戶的瀏覽器緩存,不允許CDN等中繼緩存服務(wù)器對其緩存。
  • 優(yōu)先級:cache-control -> expires

1.3 協(xié)商緩存((Last-Modified & If-Modified-Since\Etag & If-None-Match)

協(xié)商緩存就是強制緩存失效后,瀏覽器攜帶緩存標(biāo)識向服務(wù)器發(fā)起請求,由服務(wù)器根據(jù)緩存標(biāo)識決定是否使用緩存的過程。

協(xié)商緩存是發(fā)起http請求攜帶 Etag 或者 Last-Modified 兩個字段,由服務(wù)器做對比確定緩存資源是否可用。

  • 服務(wù)器通過 Last-Modified 字段告知客戶端,資源最后一次被修改的時間,客戶端會自己對這個時間進行比對, 如果相等則表示未修改,響應(yīng) 304;反之,則表示修改了,響應(yīng) 200 狀態(tài)碼,并返回數(shù)據(jù)(如果資源更新的速度是秒以下單位,這個緩存就會失效,因為時間單位是秒)
  • Etag 存儲的是文件的特殊標(biāo)識(一般都是 hash 生成的),服務(wù)器存儲著文件的 Etag 字段,之后的流程和 Last-Modified 一致
  • Last-Modified與ETag是可以一起使用的,服務(wù)器會優(yōu)先驗證ETag,一致的情況下,才會繼續(xù)比對Last-Modified,最后才決定是否返回304。
  • 優(yōu)先級: ETag -> Last-Modified

某些文件修改非常頻繁,比如在秒以下的時間內(nèi)進行修改,(比方說1s內(nèi)修改了N次),if-modified-since能檢查到的粒度是秒級的,這種修改無法判斷(或者說UNIX記錄MTIME只能精確到秒);

2.本地緩存

2.1 Cookie

  • 用于解決http無狀態(tài)的缺點,在客戶端存儲會話信息,記錄用戶的狀態(tài)
  • 使用cookie在客戶端存儲一些其它的數(shù)據(jù),可以設(shè)置使用范圍、增刪改查作用
//增改:
Cookies.set("token", res1.data.result.token, {
	expires: 7,
	path: "/",
	domain: "101hr.com"
});
//刪除對應(yīng)項
Cookies.remove("token", { path: "/", domain: "101hr.com" });
//查
Cookies.get("menuClick")

2.2 sessionStorage、localStorage

  • 是一種在客戶端存儲數(shù)據(jù)的一種機制,主要的目的是為了克服由cookie帶來的一些限制
  • 當(dāng)數(shù)據(jù)需要被嚴(yán)格控制在客戶端上時,無須將數(shù)據(jù)在客戶端和服務(wù)器之間來回的進行傳送,并且可以存儲大量的跨會話的數(shù)據(jù)
  • Web Storage包含了兩種對象的定義,sessionStorage和localStorage
  • sessionStorage只能存儲字符串類型數(shù)據(jù),無法直接存儲數(shù)組類型和JSON對象
  • 所以可以JSON.stringify()方法轉(zhuǎn)換成字符串,再存儲到sessionstorage中,使用的時候再使用JSON.parse()轉(zhuǎn)化回來

//sessionStorage和localStorage的使用方式是相近的
//增改
localStorage.setItem('redirect_uri',res.data.result.redirect_uri)
//存儲數(shù)組和對象類型
localStorage.setItem('redirect_uri',JSON.stringify(res.data.result.redirect_uri))
sessionStorage.setItem('redirect_uri',res.data.result.redirect_uri) 
//查
localStorage.getItem('redirect_uri’)
JSON.parse(localStorage.getItem('redirect_uri’))
//刪
localStorage.removeItem('redirect_uri’)
//清空storage數(shù)據(jù)
localStorage.clear() 

2.3 vuex

  • vuex是一個專為vue.js應(yīng)用程序開發(fā)的狀態(tài)管理器
  • 它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并且以相 應(yīng)的規(guī)則保證狀態(tài)以一種可以預(yù)測的方式發(fā)生變化,采用單向數(shù)據(jù)流的方式更加快的定位到位置
  • 數(shù)據(jù)保存在Vuex的state字段內(nèi),任何頁面組件都可以通過$store.state.變量名稱去讀取數(shù)據(jù)
  • 修改state數(shù)據(jù),顯示地提交mutations,使用this.$store.commit方法來執(zhí)行mutations
  • 頁面刷新數(shù)據(jù)恢復(fù),故結(jié)合keep-alive、web Storage來使用

全部評論

相關(guān)推薦

評論
點贊
2
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
牛客企業(yè)服務(wù)