前端性能優化(三)——瀏覽器九大緩存方法


上一篇文章介紹的是《瀏覽器緩存機制》,瀏覽器緩存是瀏覽器保存數據用於快速讀取或避免請求重復資源,提升網頁加載速度。緩存的數據到底放哪了呢?作為開發者,有時也需要檢查一下緩存中的內容。所以介紹下緩存方法以及緩存內容在哪查找?

1、http 緩存

http緩存是存在於服務器與瀏覽器之間,是一種保存資源副本並在下次請求時直接使用該副本的技術。web緩存發現請求資源已經被存儲,它會攔截請求,返回資源副本,而不會去服務器重新請求資源。

具體的緩存設置,如何判斷是否有緩存?等,上一篇文章以詳細介紹,可點擊《瀏覽器緩存機制》查看。

打開瀏覽器調試模式,在 Application 右側就會有瀏覽器的 8 種緩存方式,具體如下:

前端性能優化(三)——瀏覽器九大緩存方法

 

2、websql

websql是較新的chrome瀏覽器支持,並以獨立規范形式出現,引入了一組使用 SQL 操作客戶端數據庫的 APIs。websql主要特點:

  • Web Sql數據庫 API 不是HTML5的一部分,在H5之前就已經存在了。
  • 將數據以數據庫的形式存儲在客戶端,按需讀取。
  • 數據便於檢索,允許使用sql語句。
  • 可以使瀏覽器實現小型數據庫存儲功能。

websql常用的API如下:

openDatabase - 打開已存在的數據庫,如果不存在,則會新建一個新的數據庫。 transaction - 控制一個事物,以及這種情況執行提交或者回滾。 executeSql - 執行 SQL 語句。

3、indexDB

indexDB 是為了能夠在客戶端存儲客觀數量的結構化數據,並且在這些數據上使用索引進行高性能的檢索。DOM存儲對於少量數據是非常友好的,但不適合存儲大量結構化數據,indexDB就是為了解決這個問題而生的。

indexDB 分別為同步和異步訪問提供了單獨的API,同步API本打算供Web Worker內部使用,但目前還未實現。異步API在Web Worker內部和外部都可以使用,另外瀏覽器對indexDB有50M大小限制。

indexDB主要特點有:

  • indexDB大小取決於你的硬盤,存儲的數據量非常大。
  • 可以直接存儲任何類型的數據,如 js任何類型的數據 、blob流。
  • 可以創建索引,提供高性能搜索功能。
  • 采用事務,保證數據的准確性和一致性。

4、cookie

cookie指的就是會話跟蹤技術。一般指網站為了辨別用戶身份,進行session跟蹤而而存儲在用戶本地終端上的數據,cookie一般通過http請求頭發送到服務器。cookie主要特點有:

  • 跨域限制,同一個域名下可多個網頁內使用。
  • cookie可以設置有效期,超出有效期自動清除。
  • cookie存儲大小在4K以內。
  • cookie的存儲不能超過50個cookie。
  • 只能存儲字符串類型。

cookie常用操作:

setMaxAge - 設置cookie的有效期,時間單位是秒,負值時表示關閉瀏覽器后就失效,默認值為-1。 setDomain - 用於指定,只有請求指定域名才會帶上該cookie。 setPath - 只有訪問該域名下的cookieDemo的這個路徑地址才會帶cookie。 setValue - 重置 value 。

5、localstorage

localStorage 是HTML5的一種新的本地緩存方案,目前使用比較多,一般存儲ajax返回的數據,存儲特點主要有:

  • 數據可以長久保存,沒有有效期,直到手動刪除為止。
  • 存儲的數據量大,一般5M以內。
  • 存儲的數據可以在同一個瀏覽器的多個窗口使用。
  • 存儲的數據不會發送到服務器。

localStroage常用API如下:

localStorage.setItem(key,value) // 保存數據 localStorage.getItem(key) // 獲取數據 localStorage.removeItem(key) // 刪除單個數據 localStorage.clear() // 刪除全部

6、sessionstorage

sessionStorage與上述localStroage類似,它的特點主要有:

  • 存儲的數據在瀏覽器關閉后刪除,與網頁窗口具有相同的生命周期。
  • 可以存儲的數據大小5M。
  • 存儲的數據不會發送到服務器。

sessionStorage常用API如下:

sessionStorage.setItem(key,value) // 保存數據 sessionStorage.getItem(key) // 獲取數據 sessionStorage.removeItem(key) // 刪除單個數據 sessionStorage.clear() // 刪除全部

7、application cache

application cache是離線緩存技術,將大部分的圖片、js、css等資源放在mainfest文件配置中,頁面打開時通過mainfest文件讀取本地文件或請求服務器資源。通常用於靜態頁面的緩存。

application cache特點:

  • mainfest文件必須有變化時才會更新。
  • 一次必須更新mainfest文件中的所有文件才能生效。
  • 當網絡斷開時,可以繼續訪問頁面。
  • 文件緩存到本地,不需要每次都從網絡上請求。
  • 穩定性比較好,遇網絡故障或服務器故障可以繼續訪問本地緩存。
  • 加載速度快,緩存資源為本地資源,因此加載速度較快。

8、cacheStorage

cacheStorage 表示 cache對象的存儲。該接口提供 serviceWorker 或其他類型的工作線程或window范圍訪問的所有命名緩存的主目錄。

CacheStorage常見方法:

  • CacheStorage.match() - 檢查給定的 Request 對象是否是 CacheStorage 對象跟蹤的 Cache 對象中的鍵,返回Promise
  • CacheStorage.has() - 返回一個 Promise,它解析為與 cacheName 相匹配的 Cache 對象。
  • CacheStorage.delete() - 刪除cache對象
  • CacheStorage.keys() - 含有keys中字符串的任意一個,則返回一個promise對象。
  • cacheStorage.has() - 如果包含cache對象,則返回一個promise對象。

9、flash緩存

flash緩存也是頁面通過js調用flash讀寫特定的磁盤目錄,達到本地數據緩存的目的。這是要基於flash的,所以基本不用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM