js 前端緩存總結

前端緩存分爲 HTTP緩存 和 瀏覽器緩存;
圖片引用來源:https://www.jianshu.com/p/256d0873c398在這裏插入圖片描述

前端用於緩存的關鍵字段

program, cache-control, expires

都是控制網頁緩存的,使用強緩存時,就有限判斷緩存是否過期,如果不過期就直接返回。如果過期,就進行協商緩存處理。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- HTTP 1.0 -->
<meta http-equiv="pragma" content="no-cache">
<!-- HTTP 1.1 -->
<meta http-equiv="cache-control" content="no-cache">
<!-- Prevent caching at the proxy server -->
<meta http-equiv="expires" content="0">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />

last-modified, if-modified-since, etag, if-none-match

last-modified / if-modified-since; etag / if-none-match屬於協商緩存。

1、last-modified, if-modified-since

利用時間戳來比較客戶端是否有服務器端最新的資源。一般用於靜態資源文件,比如圖片,文件等。具體流程是:當瀏覽器第一次請求資源文件時,服務器返回響應時,會把該資源的最後修改時間寫到last-modified中給瀏覽器端;瀏覽器第二次請求該資源的時候,會把該修改時間通過if-modified-since帶回給服務器端;如果時間相等,則返回304;

2、etag,if-none-match

利用資源的唯一標識符比較客戶端是否有服務器端的最新的資源。一般用於用於靜態數據,動態數據。具體流程是: 當瀏覽器第一次請求數據時,服務器會根據數據內容,計算出唯一標示值,然後通過etag關鍵值,把該值傳遞給瀏覽器端;當瀏覽器端第二次請求數據時,瀏覽器會把該唯一標示,通過if-none-match字段帶到服務器端, 服務器端比較兩個etag值,如果相等,那麼就返回304;


前端緩存的分類

靜態資源文件,如圖片,文件等

使用last-modified, if-modified-since對比服務器與客戶端中存儲的文件的時間戳。

靜態數據, 比如省市區,性別等

永遠使用本地緩存數據,由後端返回id值,在前端通過id獲取數據。

動態數據, 比如用戶信息

利用etag/if-none-tag來比較該數據計算出來的唯一表示值。如果相等,則表示瀏覽器端緩存的是最新的數據。

列表數據

未完待續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章