說一下幾種常用的前端快取

馬明瑞發表於2018-04-02

1.Cookie

cookie是比較老的前端快取技術了,它的特點是想要使用它前端必須要有服務(靜態網頁是不行的),而且儲存大小限制在4kb。那麼為什麼必須要有服務才能使用cookie呢?因為只要有請求涉及cookie,cookie就要在伺服器和瀏覽器之間來回傳送,而且由於瀏覽器的跨域限制,客戶端和服務端必須要保證同源的原則(也就是跨域問題,詳情見我的其他文章),由於cookie是存放在前端的,所以安全問題一直是個大問題,因此一般重要的資訊不建議放在cookie中存放。

2.Session
對於服務端的程式眼來說session大家肯定很熟悉了,session是一種服務端的機制,也就是能把資訊存放在服務端,所以安全可以保障,它的原理是通過session id來識別客戶端,這個session id是存放在cookie中的(當然session id讓使用者看見沒無妨),服務端會通過session id來識別客戶端進行匹配和判斷。它和cookie對比起來差距就很明顯了,一個是把資料存在客戶端;一個存在服務端,從安全性考慮的話一般像使用者名稱密碼這種私密資訊一般放在session中。
3.localStorage
它的特點就是“持久”,一旦通過儲存,不通過手動清除的話,就會一直儲存在前端,它的儲存格式是鍵值對的方式也就是“key-value”的方式儲存的,它的儲存空間大小限制在500萬字元左右,一下是它的一些使用方法:

localStorage.length    獲得storage中的個數
localStorage.key(n)    獲得storage中第n個元素對的鍵值(第一個元素是0)
localStorage.getItem(key)    獲取鍵值key對應的值
localStorage.key    獲取鍵值key對應的值
localStorage.setItem(key, value)    新增資料,鍵值為key,值為value
localStorage.removeItem(key)    移除鍵值為key的資料
localStorage.clear()    清除所有資料

4.sessionStorage
這個和localStorage有什麼區別呢?sessionStorage是一種會話級別的本地儲存,一旦關閉瀏覽器他就會消失,而前者是很“持久”的,即使你關閉一萬次瀏覽器也沒事,所以差距還是很大的。後兩者是H5才有的特性,因為現在都是前後端分離的開發模式,前端工程師都很青睞這兩種前端快取方式,以下是sessionStorage的記本用法:

sessionStorage.length    獲得storage中的個數
sessionStorage.key(n)    獲得storage中第n個元素對的鍵值(第一個元素是0)
sessionStorage.getItem(key)    獲取鍵值key對應的值
sessionStorage.key    獲取鍵值key對應的值
sessionStorage.setItem(key, value)    新增資料,鍵值為key,值為value
sessionStorage.removeItem(key)    移除鍵值為key的資料
sessionStorage.clear()    清除所有資料

相關文章