Ⅰ 什麼是瀏覽器緩存
什麼是瀏覽器緩存
瀏覽器緩存(BrowerCaching)是瀏覽器在本地磁碟對用戶最近請求過的文檔進行存儲,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁碟載入文檔。
瀏覽器緩存的優點有:
減少了冗餘的數據傳輸,節省了網費
減少了伺服器的負擔,大大提升了網站的性能
加快了客戶端載入網頁的速度
在前端開發面試中,瀏覽器緩存是web性能優化面試題中很重要的一個知識點,從而說明瀏覽器緩存是提升web性能的一大利器,但是瀏覽器緩存如果使用不當,也會產生很多問題,正所謂是,想說愛你,並不是很容易的事。所以,結合最近遇到的案例,本文對瀏覽器緩存相關的悉兄知識進行總結歸納,希望對讀者睜逗襲有所幫助。
瀏覽器緩存的分類
瀏覽器緩存主要有兩類:緩存協商和徹底緩存,也有稱之為協商緩存和強緩存。
瀏覽器在第一次請求發生後,再次請求時:
瀏覽器會先獲取該資源緩存的header信息,根據其中的expires和cahe-control判斷是否命中強緩存,若命中則直接從緩存中獲取資源,包括緩存的header信息,本次請求不會與伺服器進行通信;
如果沒有命中強緩存,瀏覽器會發送請求到伺服器,該請求會攜帶第一次請求返回的有關緩存的header欄位信息(Last-Modified/IF-Modified-Since、Etag/IF-None-Match),由伺服器根據請求中的相關header信息來對比結果是否命中協商緩存,若命中,則伺服器返回新的響應header信息更新緩存中的對應header信息,但是並不返回資源內容,它會告知瀏覽器可以直接從緩存獲取;否則返回最新的資源內容
強緩存
強緩存是利用http的返回頭中的Expires或者Cache-Control兩個欄位來控制的,用來表示資源的緩存時間。
Expires
該欄位是http1.0時的規范,它的值為一個絕對時間的GMT格式的時間字元串,比如Expires:Mon,18Oct206623:59:59GMT。這個時間代表著這個資源的失效時間,在此時間之前,北京電腦培訓建議指伏即命中緩存。這種方式有一個明顯的缺點,由於失效時間是一個絕對時間,所以當伺服器與客戶端時間偏差較大時,就會導致緩存混亂。
Ⅱ 關於瀏覽器緩存
首先瀏覽器緩存分為 內存緩存 和 文件緩存 。
內存緩存是瀏覽器自己控制的,不受 Cache-Control 影響,跟計算機內存空間大小有關,並且關閉瀏覽器就會消失。
文件緩存 就是我們常說的瀏覽器緩存。
文件緩存分為2種: 強制緩存 和 協商緩存 。
強制緩存 就是通過Header上配置Cache-Control:public,max-age=300這種形式實現的,Cache-Control可以客戶端在請求Header配置,也可以服務端在響應Header配置。
強制緩存 比較適合用在變化頻率比較低的文件上,比如圖片,js,css都可以,通常我們都使用這種緩存再配合文件hash後綴實現緩存文件的即時更新。
協商緩存 是一種服務端控制文件緩存的策略,機制是服務端會根據最新更改時間和文件標識判斷響應的時候是否要返回內容。雖然每次都會向服務端發起請求,但是如果服務端確定緩存,會返回很少響應內容。
這種方式比較適合需要頻繁更新的文件,需要配合Cache-Control:no-cache阻止強制緩存。另外html不要配置強制緩存,通常我們請求的html文件地址不會加hash。
協商緩存 主要通過2組Header標簽讓客戶端與服務端確認來達成:首先服務端在響應的時候會加上 Last-Modified 和 Etag ,前者表示文件最後更新時間,後者表示文件唯一標識;然後客戶端再次請求的時候會帶上 If-Modified-Since 和 If-None-Match ,值分別跟服務端的 Last-Modified 和 Etag 一致。
參考:
瀏覽器緩存
Ⅲ 瀏覽器緩存機制簡單概括和分析
對於訪問的頁面和請求,為了縮短網頁請求資源的距離,減少延遲,並且由於緩存文件可以重復利用,還可以減少帶寬,降低網路負荷,瀏覽器和伺服器都有可能會對請求資源進行緩存,接下來的文章就簡單介紹和分析瀏覽器的緩存機制。
深入理解瀏覽器的緩存機制: https://www.jianshu.com/p/54cc04190252
這篇文章已經有詳細的講解,這里就概括一下:
以首頁的請求為例:
1、強制緩存策略(Expires和Cache-Control) :當瀏覽器發起http請求的時候,如果配置了緩存策略且緩存在有效期內,會直接使用瀏覽器緩存。 不使用強制緩存 ( Cache-Control=no-chache, 或者 max-age=0 )
(1)、圖中請求伺服器:是 max-age=0 的情況,瀏覽器直接請求伺服器資源,而不是用本地緩存
(2)、圖中磁碟緩存和內存緩存:就是瀏覽器使用了本地緩存而不再請求伺服器資源
2、協商緩存策略(Last-Modified和If-Modified-Since, ETag和If-None-Match): 當瀏覽器發起http請求的時候,如果 強制緩存策略 失效,或者者禁用了強制緩存,這時候會根據 If-Modified-Since 中的值與伺服器中這個資源的最後修改時間對比,如果沒有變化,返回304和空的響應體,直接從緩存讀取,如果If-Modified-Since的時間小於伺服器中這個資源的最後修改時間,說明文件有更新,於是返回新的資源文件和200。
不使用協商緩存 ( Cache-Control=no-store ),這個參數同時也會 禁用強制緩存。
(1)、伺服器資源返回無更新,瀏覽器使用上次請求的資源
(2)、伺服器資源有更新,返回200並返回最新的資源
3、不使用緩存策略(Cache-Control=no-store): 所有內容都不會被緩存,即不使用強制緩存,也不使用協商緩存。當response head 設置了no-store,瀏覽器不會對返回的資源做緩存,每次請求都是直接請求伺服器。這可以保證瀏覽器每次都能拿最新的資源,即使資源對比上次請求沒有任何更新,但同時也降低了頁面的響應速度,和增加了網路的IO與伺服器的壓力。
可以明顯的看到請求時間,請求伺服器資源時間 >> 請求磁碟緩存 > 請求內存緩存,所以合適的緩存策略,可以在不影響業務的情況下,極大地提升客戶體驗和後台伺服器壓力。
Ⅳ 電腦中瀏覽器緩存是什麼意思
瀏覽器緩存(Browser Caching)是為了加速瀏覽,瀏覽器在用戶磁碟上對最近請求過的文檔進行存儲,當訪問者再次請求這個頁面時,瀏覽器就可以從本地磁碟顯示文檔,這樣就可以加速頁面的閱覽。緩存的方式節約了網路的資源,提高了網路的效率。
瀏覽器緩存清楚記錄了你在電腦上上網記錄,有時漏隱私之舉。
如何清除上網留下的瀏覽器緩存:
1、自動清理IE緩存的方法:打開IE,選擇「工具--internet選項」,切換到「高級」選項卡,找到「關閉瀏覽器時清空internet臨時文件夾」,並將其選中,確定即可.
2、要清空 Mozilla Firefox 的緩存,請按以下步驟操作:
注銷您的 AdSense 帳戶。關閉所有其他打開的瀏覽器窗口。
單擊瀏覽器頂部的"Tools"(工具)菜單,並選擇"Options"(選項)。
單擊"Privacy"(隱私)。
單擊"Cache"(高速緩沖)旁邊的"Clear"(清空緩存)。
單擊"OK"(確定)。
3、要清空 Mozilla 和 Netscape 的緩存,請按以下步驟操作:
注銷您的 AdSense 帳戶。關閉所有其他打開的瀏覽器窗口。
單擊瀏覽器頂部的"Edit"(編輯)菜單,然後選擇"Preferences"(首選項)。
單擊"Advanced"(高級)旁邊的"+"。
單擊"Advanced"(高級)下面的"Cache"(高速緩存)。
單擊"Clear Cache"(清除高速緩存)。
單擊"OK"(確定)。
4、要清空 Safari 的緩存,請按以下步驟操作:
注銷您的 AdSense 帳戶。關閉所有其他打開的瀏覽器窗口。
打開瀏覽器工具欄中的"Safari"菜單。
選擇"Empty Cache"(清空緩存)。
單擊該對話框中的"Empty"(清空)。
某些情況下,可能需要多次清空您的緩存。
Ⅳ 瀏覽器緩存原理簡述
緩存文件存儲方式有2種:內存和硬碟。為了提高文件讀取速度,瀏覽器優先讀內存中的緩存文件(如果存在的話)。
按照本地緩存階段和協商緩存階段分類:
緩存的策略由http消息頭Cache-Control確定,以下為各個值對應的效果:
Cache-Control:public :所有內容都將被緩存(客戶端和代理伺服器都可緩存)
Cache-Control:private :所有內容只有客戶端可以緩存
Cache-Control:no-cache :默認值。客戶端緩存內容,但是是否使用緩存則需要經過協商緩存來驗證決定
Cache-Control:no-store :所有內容都不會被緩存,即不使用強制緩存,也不使用協商緩存
Cache-Control:max-age=xxx (xxx is numeric) :緩存內容將在xxx秒後失效
HTTP1.0 的特性,標識該資源過期的時間點,它是一個絕對值,格林威治時間(Greenwich Mean Time, GMT),即在這個時間點之後,緩存的資源過期; 優先順序:Cache-Control 優先順序高於 Expires ,為了兼容,通常兩個頭部同時設置;瀏覽器默認行為:其實就算 Response Header 中沒有設置 Cache-Control 和 Expires,瀏覽器仍然會緩存某些資源,這是瀏覽器的默認行為,是為了提升性能進行的優化,每個瀏覽器的行為可能不一致,有些瀏覽器甚至沒有這樣的優化。
Last-Modified (Response Header)與 If-Modified-Since (Request Header)是一對報文頭,屬於 http 1.0。
If-Modified-Since 是一個請求首部欄位,並且只能用在 GET 或者 HEAD 請求中。Last-Modified 是一個響應首部欄位,包含伺服器認定的資源作出修改的日期及時間。當帶著 If-Modified-Since 頭訪問伺服器請求資源時,伺服器會檢查 Last-Modified,如果 Last-Modified 的時間早於或等於 If-Modified-Since 則會返回一個不帶主體的 304 響應,否則將重新返回資源。
ETag 與 If-None-Match 是一對報文頭,屬於 http 1.1。
ETag 是一個響應首部欄位,它是根據實體內容生成的一段 hash 字元串,標識資源的狀態,由服務端產生。If-None-Match 是一個條件式的請求首部。如果請求資源時在請求首部加上這個欄位,值為之前伺服器端返回的資源上的 ETag,則當且僅當伺服器上沒有任何資源的 ETag 屬性值與這個首部中列出的時候,伺服器才會返回帶有所請求資源實體的 200 響應,否則伺服器會返回不帶實體的 304 響應。
Ⅵ 瀏覽器緩存的作用是什麼
作用是:
【釋放內存,可以快速響應手機操作】
【負面就是當你瀏覽曾經瀏覽過的頁面時,如果不清除緩存,會比較快,但是一清除的話就如同你的額手機第一次瀏覽該網頁,所有的鏈接、圖片、媒體、聲音腳本都得重新下載,顯得比較慢,也增加了數據流量(理論上講本地有的話系統是不會再從網上down資料的,這樣就增加了你的數據流量)】
Ⅶ 電腦中瀏覽器緩存是什麼意思
瀏覽器緩存,是打開網頁首先需要載入到本地的圖片文字視頻等網頁文件,一般只有緩存到本地才可以流暢訪問,否則就會無法正常載入。或者就無法打開網頁了。