1. 程式人生 > >前端效能優化之瀏覽器快取

前端效能優化之瀏覽器快取

前端效能優化有很多方式,今天我們主要學習下關於瀏覽器快取的一些知識。

客戶端快取

session

localStorage (需要注意安全問題,防篡改)

cookie (資料儲存儘量不要使用這種方式存放,請求時會增加頭部重量)

圖片採用wbp 格式,佔用體積小。

瀏覽器快取

作用:

  1. 減少冗餘的資料傳輸
  2. 減少伺服器負擔
  3. 加快客戶端載入網頁的速度

當客戶端向瀏覽器傳送請求的時候,如果沒有快取則直接請求伺服器。如果有則根據快取狀態來是否從快取中獲取對應的檔案。

  • 強制快取

利用ExpiresCache-Control兩個欄位來控制

expires:是快取過期時間(即資源過期時間),是個絕對值。所以如果客戶端更改時間,會導致快取混亂。所以http:1.1增加了cache-control:max-age 欄位,它是一個相對的時間。

Cache-Control與Expires可以在服務端配置同時啟用,同時啟用的時候Cache-Control優先順序高。

Control:max-age=3600,代表著源的有效期是3600

  1. no-cache:不使用本地快取。需要使用快取協商,先與伺服器確認返回的響應是否被更改,如果之前的響應中存在ETag,那麼請求的時候會與服務端驗證,如果資源未被更改,則可以避免重新下載。
  2. no-store:直接禁止遊覽器快取資料,每次使用者請求該資源,都會向伺服器傳送一個請求,每次都會下載完整的資源。
  3. public:可以被所有的使用者快取,包括終端使用者和CDN等中間代理伺服器。
  4. private:只能被終端使用者的瀏覽器快取,不允許CDN等中繼快取伺服器對其快取。
     
  • 協商快取

普通重新整理會啟動弱快取(即協商快取),忽略強快取。

      協商快取涉及到兩組header 欄位。

    EtagIf-None-Match

    Last-ModifiedIf-Modified-Since

  • EtagIf-None-Match

他們返回的是一個校驗碼,是個hash值。Etag能夠保證資源都是唯一的,是客戶端請求伺服器的時候伺服器返回的。如果

資源變化了Etag 也會發生變化。當再次請求伺服器的時候器根據瀏覽器上送的If-None-Match之前伺服器返回的etag值值來判斷是否命中快取

  • Last-ModifiedIf-Modified-Since

瀏覽器第一次請求一個資源的時候,伺服器返回的header中會加上Last-ModifyLast-modify是一個時間標識該資源的最後修改時間,例如Last-Modify: Thu,31 Dec 2037 23:59:59 GMT

當瀏覽器再次請求該資源時,request的請求頭中會包含If-Modify-Since,該值為快取之前返回的Last-Modify。伺服器收到If-Modify-Since後,根據資源的最後修改時間判斷是否命中快取。

如果命中快取,則返回304,並且不會返回資源內容,並且不會返回Last-Modify

Last-ModifiedETag是可以一起使用的,器會驗證ETag,一致的情況下,才會繼續Last-Modified,最後才決定是否返回304

Etag優勢:

HTTP1.1Etag的出現主要是為了解決幾個Last-Modified比較難解決的問題:

  • 一些檔案也許會週期性的更改,但是他的內容並不改變(僅僅改變的修改時間),這個時候我們並不希望客戶端認為這個檔案被修改了,而重新GET;
  • 某些檔案修改非常頻繁,比如在秒以下的時間內進行修改,(比方說1s內修改了N次),If-Modified-Since能檢查到的粒度是s級的,這種修改無法判斷(或者說UNIX記錄MTIME只能精確到秒);
  • 某些伺服器不能精確的得到檔案的最後修改時間。

相關推薦

前端效能優化瀏覽器快取

前端效能優化有很多方式,今天我們主要學習下關於瀏覽器快取的一些知識。 客戶端快取: session localStorage (需要注意安全問題,防篡改) cookie (資料儲存儘量不要使用這種方式存放,請求時會增加頭部重量) 圖片採用wbp 格式,佔用體積小。

前端效能優化防抖-debounce

這周接到一個需求-給輸入框做模糊匹配。這還不簡單,監聽input事件,取到輸入值去調介面不就行了? 然而後端小哥說不行,這個介面的資料量非常大,這種方式呼叫介面的頻率太高,而且使用者輸入時呼叫根本沒有必要,只要在使用者停止輸入的那一刻切調介面就行了。 唉?這個場景聽起來怎麼這麼像防抖呢? 那到底什麼是防抖呢

前端效能優化路-資料存取小結

接著上一節講的,我們說到過,效能優化的一大痛點就是IO讀寫,這一次我們討論一下,資料讀寫的優化,資料儲存的位置,介質決定了讀取的速度。 主要指的是,應用記憶體(執行時記憶體),遠端記憶體(redis等),本地檔案系統(localstorage),遠端檔案系統(

前端效能優化路-dom程式設計優化

在前端效能優化上一直有個瓶頸,就是dom,web應用最常見的效能瓶頸就是dom,用指令碼進行dom操作的代價是很昂貴的. 具體體現為幾點: 修改和訪問dom元素 修改dom元素的樣式導致的重繪(repaint)和重排(reflow) 通過dom事件處理與使用者

前端效能優化重排和重繪

前言,最近利用碎片時間拜讀了一下尼古拉斯的另一鉅作《高效能JavaScript》,今天寫的文章從“老生常談”的頁面重繪和重排入手,去探究這兩個概念在頁面效能提升上的作用。 一.重排 & 重繪 有經驗的大佬對這個概念一定不會陌生,“瀏覽器輸入URL發生了什麼”。估計大家已經爛熟於

前端效能優化WebP

此文已由作者吳維偉授權網易雲社群釋出。歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。前端效能優化是一件很瑣碎的事情。它不像其它很多技術,在確切有限的步驟下就可以把功能做好。它就像是在打掃屋子,需要時常去檢查屋子是否有不整潔的地方,然後立即整理。所以在效能優化的過程中會遇到

前端效能優化n種方法

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。 前端效能優化有很多種,我們在實際工作中或許也就用到那麼幾種。但是,在面試的時候,知道的不知道的,要說很多

前端效能優化http請求的過程

前端效能優化之http請求的過程 在前端面試中,經常會被問到“一個頁面從輸入URL到頁面載入顯示完成,這個過程都發生了什麼”,這是前端的經典面試題之一。這個過程涉及的東西很多,區分度很高。 大致分為這幾個過程: 1.DNS解析 2.TCP連線 3.傳送HTTP請求 4.伺服器

js前端效能優化函式節流和函式防抖

前言:針對一些會頻繁觸發的事件如scroll、resize,如果正常繫結事件處理函式的話,有可能在很短的時間內多次連續觸發事件,十分影響效能 節流: 節流:使得一定時間內只觸發一次函式。 它和防抖動最大的區別就是,節流函式不管事件觸發有多頻繁,都會保證在規定時間內一定會執行一次真正的事件處理函式

web前端效能優化CDN

什麼是CDN CDN (Content Delivery Network) 可直譯成內容分發網路。CDN的本質仍然李詠快取技術快取, 解決的是__如何將資料快速可靠從源站傳遞到使用者的問題__。使用者獲取資料時,不需要直接從源站獲取,通過CDN對於資料的分發,使用者可以從一個較優的伺服器獲取資料,從而達到快

前端效能優化-css阻塞渲染

  為了防止頁面重複渲染頁面,降低瀏覽器效能,瀏覽器在CSSDOM構建完成之前,不會渲染頁面,直觀的感受就是,在css下載完成之前,瀏覽器將出現白屏現象。 瀏覽器渲染流程: 瀏覽器開始解析目標HTML檔案,執行流的順序為自上而下。 HTML解析器將

前端效能優化路——圖片篇。

本人是一名前端開發者,在公司負責目前負責資訊流服務,為五大手機廠商和各大App提供服務,每天的請求就是以億計算,加上我們又做了SSP和DSP,就是類似於百度廣告聯盟,騰訊廣點通這種。接觸過的應該知道,所以前端優化一直是我頭痛的問題,不僅要注重使用者體驗,同時要兼

最常被遺忘的 Web 效能優化瀏覽器快取

一提起快取, Web開發者們總是在想資料庫快取、頁面靜態化、使用 Redis記憶體快取。這些方法都有一個共性,就是集中在後臺,目的就是加快資料的讀取,少用比較容易產生瓶頸的部分。 後臺該優化的都優化到了最佳狀態,卻往往疏忽了一個非常重要的過程,就是資料傳輸。想著如何快速

前端效能優化 JavaScript

前言 本文為 《高效能 JavaScript》 讀書筆記,是利用中午休息時間、下班時間以及週末整理出來的,此書雖有點老舊,但談論的效能優化話題是每位同學必須理解和掌握的,業務響應速度直接影響使用者體驗。 一、載入和執行 大多數瀏覽器使用單程序處理 UI 更新和 JavaScript 執行等多個任務,而同一時

前端效能優化利用 Chrome Dev Tools 進行頁面效能分析

背景 我們經常使用 Chrome Dev Tools 來開發除錯,但是很少知道怎麼利用它來分析頁面效能,這篇文章,我將詳細說明怎樣利用 Chrome Dev Tools 進行頁面效能分析及效能報告資料如何解讀。 分析面板介紹 上圖是 Chrome Dev Tools 的一個截圖,其中,我認為能用於進行頁面

架構優化高效能:web前端效能優化,靜態資源快取,檔案壓縮

web前端效能優化 內容主要來自阿里架構一書。自己總結以及進行實踐 一.瀏覽器訪問優化 1.減少http請求 合併css,合併JS,合併圖片:圖片也可以進行合併,多張圖片合併成一張, 現在的瀏覽器會自動的複用tcp連結,不會剛用完就關閉 2.設定使用瀏覽器快取 靜態資源(如何設定?可

精讀《手寫 SQL 編譯器 - 效能優化快取

1 引言 重回 “手寫 SQL 編輯器” 系列。這次介紹如何利用快取優化編譯器執行效能。 可以利用 Frist 集 與 Match 節點快取 這兩種方式優化。 本文會用到一些圖做解釋,下面介紹圖形規則: First 集優化,是指在初始化時,將整體文法的 First 集找到,因此在節點

[轉] webpack前端效能優化(史上最全,不斷更新中。。。)

最近在用webpack優化首屏載入效能,通過幾種外掛之後我們上線前後的速度快了一倍,在此就簡單的分享下吧,先上個優化前後首屏渲染的對比圖。 可以看到總下載時間從3800ms縮短到1600ms。 我們在用webpack時一般都會選擇多入口檔案吧,為的就是將自己的原始碼跟第三方庫程式碼分離。這是之前的程式

前端效能優化——通用的本地快取SDK

說明:該文章自編,學習成果來源於 @慕課cc老師。程式碼是參考之後,自己實戰編碼的,對 @慕課cc老師的程式碼有相應更改如有不當,馬上刪除。非常感謝! 優點 縮短使用者進入頁面的時間 使用本地儲存的資源減少網路請求,減小網路壓力 重要資源存放在本

146.Python修煉路【151-前端-前端自動化及其優化-前端效能優化】2018.08.06

前端效能優化 從使用者訪問資源到資源完整的展現在使用者面前的過程中,通過技術手段和優化策略,縮短每個步驟的處理時間從而提升整個資源的訪問和呈現速度。網站的效能直接會影響到使用者的數量,所有前端效能優化很重要。 前端效能優化分為如下幾個方面: 一、程式碼部署: 1、程式碼的壓縮與合併