當前位置:首頁 » 網頁前端 » 前端數據緩存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端數據緩存

發布時間: 2023-07-24 03:02:25

㈠ web編程開發都有哪些前端緩存

緩存問題在web前端編程開發領域中是一個非常重要的技術問題,下面我們就一起來了解一下,關於web緩存我們都需要了解哪些知識。


緩存優點

通常所說的Web緩存指慧世的是可以自動保存常見http請求副本的http設備。對於前端開發者來說,瀏覽器充當了重要角色。除此外常見的還有各種各樣的代理伺服器也可以做緩存。當Web請求到達緩存時,緩存從本地副本中提取這個副本內容而不需要經過伺服器。這帶來了以下優點:

緩存減少了冗餘的數據傳輸,節省流量

緩存緩解了帶寬瓶頸問題。不需要更多的帶寬就能更快載入頁面

緩存緩解了瞬間擁塞,降低了對原始伺服器的要求。

緩存降低了距離延時,因為從較遠的地方載入頁面會更慢一些。

緩存種類

緩存可以是單個用戶專用的,也可以是多個用戶共享的。專用緩存被稱為私有緩存,共享的緩存被稱為公有緩存。

私有緩存

私有緩存只針對專有用戶,所以不需要很大空間,廉價。Web瀏覽器中有內建的私有緩存——大多數瀏覽器都會將常用資源緩存在你的個人電腦的磁碟和內存中。

公有緩存

公有緩存是特殊的共享代理伺服器,被稱為緩存代理伺服器或代理緩存(反向代理的一種用途)。公有緩存會接受來自多個用戶的訪問,所以通過它能夠更好的減少冗餘流量。

新豎猛鮮余碧橋度限值

HTTP通過緩存將伺服器資源的副本保留一段時間,這段時間稱為新鮮度限值。這在一段時間內請求相同資源不會再通過伺服器。HTTP協議中Cache-Control和Expires可以用來設置新鮮度的限值,前者是HTTP1.1中新增的響應頭,後者是HTTP1.0中的響應頭。電腦培訓發現二者所做的事時都是相同的,但由於Cache-Control使用的是相對時間,而Expires可能存在客戶端與伺服器端時間不一樣的問題,所以我們更傾向於選擇Cache-Control。


㈡ 前端數據存儲方式有哪些

為你總結了四種數據存儲方式,希望可以幫到你:

1、Cookie

cookie 用於存儲web頁面的用戶信息。

cookie 是一些數據,存儲在你電腦上的文本文件中。當web伺服器向瀏覽器發送web頁面時,在連接關閉後,服務端不會記錄用戶的信息。Cookie的作用就是用於解決如何記錄客戶端的用戶信息。

2、localStorage

  • 允許在瀏覽器中存儲key/value對的數據。

  • 用於長期保存整個網站的數據,保存的數據沒有過期時間,直到手動去刪除。

  • 屬性是只讀的。

  • 如果你想瀏覽器窗口關閉後還保留數據,可以使用localStorage;如果你只想將數據保存在當前會話中,可以使用sessionStorage.

3、sessionStorage

  • 允許在瀏覽器中存儲key/value對的數據。

  • 數據對象臨時保存同一窗口(或標簽頁)的數據,在關閉窗口或標簽頁之後也將刪除這些數據。

4、indexedDB

索引資料庫(indexDB)API(作為HTML5 的一部分)對創建具有吩咐本地存儲數據的數據密集型的離線HTML5 Web 應用程序很有用。

同時它還有助於本地緩存數據,使傳統再現Web應用程序(比如移動 Web 應用程序)能夠更快的運行和響應。

想要了解或者學習更多前端知識,推薦北京尚學堂,雄厚的師資力量帶給你高效的學習體驗。

㈢ web前端緩存機制

前端緩存機制有多種,如瀏覽器緩存、CDN緩存、DNS緩存、代理伺服器緩存等。

CDN全稱是Content Delivery Network,即內容分發網路。CDN的原理是將資源存放在各地的緩存伺服器上,當用戶請求資源時,從就近的伺服器上返回緩存的資源,而不需要每次都從源伺服器獲取,減輕源伺服器的壓力,又能提升用戶的訪問速度。

瀏覽器可以將用戶請求的資源進行緩存,存放在本地。瀏覽器緩存一般通過請求頭來設置。
與瀏覽器緩存有關的頭部有:

瀏覽器會將伺服器的域名與IP地址的映射緩存在本地,這樣用戶在訪問網站時,不用每次都去查詢DNS映射表。

在瀏覽器和伺服器之間架設的一個伺服器 ,這個代理伺服器會幫助瀏覽器去請求頁面,然後將頁面進行處理和壓縮(例如壓縮圖片和文件),使頁面變小,再傳輸給瀏覽器。大部分代理伺服器都有緩存的功能,如果瀏覽器所請求的文件在它本機中存在且是最新的,就不需要再從源伺服器請求數據,提高了瀏覽速度。

在瀏覽某個頁面時,瀏覽器會判斷頁面的關聯內容,進行預載入。用戶在瀏覽A頁面時,就載入好B頁面,這樣當用戶去訪問B頁面時,B頁面很快就出來,提升了用戶體驗。但這個機制有一定的缺陷,就是預判不一定準確,可能會造成流量和資源的浪費。

㈣ 前端數據多谷歌瀏覽器卡

內存不足,谷歌打開窗口太多、單個頁面卡死或長時間沒清理瀏覽器緩存。
調出「清除瀏覽數據」的對話框,選中「清空緩存」,開谷歌瀏覽器的任務管理器,關閉卡頓的標簽頁(進程)。
谷歌公司成立於1998年9月4日,由拉里·佩奇和謝爾蓋·布林共同創建,被公認為全球最大的搜索引擎公司。谷歌是一家位於美國的跨國科技企業,業務包括互聯網搜索、雲計算、廣告技術等,同時開發並提供大量基於互聯網的產品與服務。

㈤ 前端瀏覽器緩存機制

在前端開發中,性能是一個永恆的話題,沒有最好,只有更好。判斷一個網站性能好壞,一個直入眼觀的即是網頁的反應速度,有一個方式就是使用緩存,一個優秀的緩存策略可以縮短網頁請求的時間,減少延遲,並且網頁可以重復利用,還可以減少帶寬,降低網路負荷。

1: 為什麼需要緩存?

a:緩存可以減少用戶等待時間,提升用戶體驗

b:減少網路帶寬消耗

c:降低伺服器壓力

Note:緩存使用不當,也會造成『臟數據』問題

2:常見的緩存類型

強緩存 -

Expires伺服器端設置,表示該資源的過期時間,會有弊端,客戶端時間和伺服器時間不一致的問題。

Cache-Control:max-age表示緩存資源的最大生命周期,單位是秒

所以Expires 結合 Cache-Control 一起使用,大型網站中一般比較適用

協商緩存-

Last-Modified:值為資源的最後更新時間,隨伺服器response返回

If-Modified-Since:通過比較兩個時間來判斷資源在兩次請求期間是否有過修改,如果沒有,則命中協商緩存

Etag:表示資源內容的唯一標識,即資源的消息摘要

If-None-Match:伺服器通過比較請求頭中的If-None-Match與當前資源的Etag是否一致來判斷資源是否在兩次請求期間有過修改

3:緩存流程圖示:

a:瀏覽器會先檢測強緩存類型(Cache-Control 或者 Expires)是否有效;命中直接瀏覽器本地獲取緩存資源

b:未命中。伺服器會根據請求頭Request Header驗證這個資源是否命中協商緩存,稱之為HTTP二次驗證,命中,伺服器返回請求,但返回資源,而是告訴客戶端直接中直接從瀏覽器緩存中獲取

Note:

1.強緩存不會發生請求,協商緩存存在伺服器請求

2.當協商緩存也未命中時,則伺服器會將資源發送到客戶端

3.F5刷新頁面,會跳過強緩存

4.Ctrl+F5刷新頁面,跳過強緩存和協商緩存

5.不會緩存的情況

HTTPS POST請求 根據Cookie獲取認證信息 Request Header Cache-Control:no-cache, max-age=0

6.小故事大道理

上文對整個概念做了闡述,還是不夠形象,我們來通過幾個小故事生動理解一下:

故事一:Last-Modified

瀏覽器:Hi,我需要 jartto.min.js 這個文件,如果是在 Last-Modified: Fri Feb 15 2019 19:57:31 GMT 之後修改過的,請發給我。

伺服器:(檢查文件的修改時間)

伺服器:Oh,這個文件在那個時間之後沒有被修改過,你已經有最新的版本了。

瀏覽器:太好了,那我就顯示給用戶了。

故事二:ETag

瀏覽器:Hi,我需要 jartto.css 這個文件,有沒有不匹配 3c61f-1c1-2aecb436 這個串的

伺服器:(檢查 ETag…)

伺服器:Hey,我這里的版本也是 3c61f-1c1-2aecb436,你已經是最新的版本了

瀏覽器:好,那就可以使用本地緩存了

㈥ 前端SPA應用緩存問題解決與實踐

要解決問題,有先決的理論知識先要了解

分兩種:

這種機制下,瀏覽器會先找本地緩存,命中則不會從伺服器請求,並返回200狀態碼,且附有 disk cache 或者 memory cache 字樣

這種機制,強緩存失效後,瀏覽器物培會攜帶緩存標識向伺服器發起請求,伺服器根據標識決定是否使用緩存

首先一點,就是 「瀏覽器會攜帶緩存標識」 ,這個標識是什麼,有兩種

好,原理講了,現在凡是用到nginx的罩寬唯,基本上自動都會實現了ETag和Last-Modified,也就是說,這部分實現機制,已經是默認的!不需要你另加處理。

好,問題來了,如何處理前端SPA應用的緩存問題呢?

現在的SPA要麼Vue要麼React要麼Angular

默認情況下,我們會看到:

即所有資源第一次進,強緩存,第二次進,無意外情況下,會執行協商緩存。

之所以會出現SPA緩存問題,在於index.html是304,那麼客戶端讀取到的,有可能是本地的Not Modified,那麼繼續下去,讀的依舊是本地的disk cache

如何解決問題呢?

這里有個特性,SPA通過webpack打包,一般默認會帶有contenthash值,即當對應文件有改動,這個contenthash值才會改變,進而改變打包出來巧賀的文件名,意味著 只有改變了的文件,文件名才會變,沒有改變的文件是不會變的

如果需要對特殊的文件特殊處理,比如文字類型的文件設置更大的緩存時間或者別的,可以參考上述語法單獨加映射

修改後, service nginx reload 一下,瀏覽器可以看到差別:

index.html一直是200,且從伺服器直接讀取,而所有其他的靜態文件,均從memory or disk cache讀取

好,那麼接下來如果有更新,可以想像,變化的文件有

而由於index.html一直是請求伺服器的,那麼得到的入口js也必然是最新的,意味著如果沒改動的,走本地強緩存,有改動的,會請求最新的,之後請求會走本地強緩存。

Problem solved.

解決前端SPA緩存問題:

㈦ 前端緩存的理解 或者 前端數據持久化的理解(強制緩存、協商緩存)

緩存可以說是性能優化中簡單高效的一種優化方式了。一個優秀的緩存策略可以縮短網頁請求資源的距離,減少延遲,並且由於 緩存文件可以重復利用 ,還可以減少帶寬,降低網路負荷。

        對於一個數據請求來說,可以分為發起 網路請求、後端處理、瀏覽器響應 三個步驟。瀏覽器緩存可以幫助我們在第一和第三步驟中優化性能。比如說直接使用緩存而不發起請求,或者發起了請求但後端存儲的數據和前端一致,那麼就沒有必要再將數據回傳回來,這樣就減少了響應數據。

①不存在該緩存結果和緩存標識,強制緩存失效,則直接向伺服器發起請求

②存在該緩存結果和緩存標識,但該結果已失效,強制緩存失效,則使用協商緩存

③存在該緩存結果和緩存標識,且該結果尚未失效,強制緩存生效,直接返回該結果

控制強制緩存的欄位分別是Expires和Cache-Control,其中Cache-Control優先順序比Expires高。

Cache-Control、Expires都是緩存到期時間,Cache-Control是相對值,Expires是絕對值,即再次發送請求時,如果時間沒到期,強制緩存生效。

註:在無法確定客戶端的時間是否與服務端的時間同步的情況下,Cache-Control相比於expires是更好的選擇,所以同時存在時,只有Cache-Control生效。

①協商緩存生效,返回304

②協商緩存失效,返回200和請求結果

這里我們以博客的請求為例,狀態碼為灰色的請求則代表使用了強制緩存,請求對應的Size值則代表該緩存存放的位置,分別為from memory cache 和 from disk cache。那麼from memory cache 和 from disk cache又分別代表的是什麼呢?什麼時候會使用from disk cache,什麼時候會使用from memory cache呢?

from memory cache代表使用 內存中的緩存 ,from disk cache則代表使用的是 硬碟中的緩存 ,

㈧ 能用JS或者前端的什麼方法實現清除瀏覽器緩存嗎

可以用JS實現清除瀏覽器緩存,解決方法如下:

1、在靜態頁面也就是以.html,.jsp,.aspx,.php結尾的文件中在<dead></head>中加入以下代碼。


注意事項:

JavaScriptJavaScript基於對象和事件驅動並具有相對安全性的客戶端腳本語言。也是一種廣泛用於客戶端Web開發的腳本語言,常用來給HTML網頁添加動態功能,比如響應用戶的各種操作。

㈨ 如何解決前端開發中的緩存問題

function loadFile(arr) {
let now = new Date();
let timestamp = "?t=" + now.getTime();
let head = document.getElementsByTagName("head")[0];

}
$(function(){
var js_arr=["alert.js","alert.css"];
loadFile(js_arr);
});現在的大多數瀏覽器都有緩存機制,目的是減少客戶端的訪問次數,減輕伺服器的壓力。但是在開發工程中或者是版本更新過程中,緩存機制的存在會使得程序版本已經更新,但是效果不能出現的狀況,需要開發人員頻繁的清除緩存,並不友好,特此總結以下幾種方式(以谷歌為例),僅供參考,如有雷同,不甚榮幸。

1.對於開發者來說,只需要關閉瀏覽器緩存就可以了。步驟是:瀏覽器右鍵打開檢查,找到network,下邊有Disable cache選項,只要將其打勾即可

2.開發者可以關閉緩存,但是並不能要求所有用戶都進行此類操作,此時可以在引用的文件之後拼接隨機數或者日期都可以,瀏覽器就會認為是新的請求,而不會使用緩存中的文件,具體如下(只演示大概思路,具體使用,具體修改):