詳解 JavaScript 儲存

陳被單發表於2016-10-06

javascript用於儲存的方式可謂是多種多樣,善於應用‘儲存’可以大大的提高網站的效能,博主結合日常開發常見需求做一下總結,希望對大家有用~

1.cookie

儲存大小:   4kb左右,以20個為上限,
清理機制:  IEOpera 會清理近期最少使用的cookieFirefox會隨機清理cookie
主要應用:   購物車,登入狀態
缺陷:         同域內http請求都會帶cookie,浪費頻寬

cookie常見攜帶引數

屬性項 屬性項介紹
name=
value
鍵值對,可以設定要儲存的 Key/Value,注意這裡的 NAME 不能和其他屬性項的名字一樣
Expires/
max-age
過期時間,在設定的某個時間點後該 Cookie 就會失效,如 expires=Wednesday, 09-Nov-99 23:12:40 GMT
Domain 生成該 Cookie 的域名,如 domain=”soulteary.com”
Path 該 Cookie 是在當前的哪個路徑下生成的,如 path=/admin/
Secure 如果設定了這個屬性,那麼只會在 SSH 連線時才會回傳該 Cookie
http http-only   true:cookie只能在伺服器端讀取和修改,比較安全
cookie安全

如果 Cookie 具有 HttpOnly 屬性且不能通過客戶端指令碼訪問,則為 true;否則為 false。預設為 false。

ie 6 +都支援屬性 HttpOnly,該屬性有助於緩解跨站點指令碼威脅。

常見應用:

  • 使用原生js操作cookie

2.localstorage

儲存內容: 只要是能序列化成字串的內容都可以儲存,利用JSON.stringify();
儲存大小: 5m
相容性:    ie8+
主要應用:常用於ajax請求快取
缺陷:      1. localstorage不被爬蟲識別,所以不能用它完全取代url傳參
               2. 不能跨域共享,所以不要用以儲存業務關鍵資訊,更加不要儲存安全資訊,(cookie可以通過window.name解決,但是localstorage不能)

常見應用:

  • 判斷localstorage已經儲存滿了
儲存滿後會丟擲異常,只要捕獲異常,再刪除全部資料,即可。
JSON.stringify(localStorage).length   可以檢視當前使用了的大小,用5M減一下可以得出粗略的剩餘大小(但是很不精確)
  • 判斷localstorage已過期  (由於localstorage沒有cookie的過期控制,需要自己控制)
  • 判斷瀏覽器是否支援localstorage
  • 常見api

3.sessionstorage

sessionStorage 在關閉頁面後即被清空,而 localStorage 則會一直儲存。其他與localstorage一樣。

4.離線快取(application cache)

相容性:   ie 9 +
主要應用:常用於靜態資源快取
儲存大小:5m
缺陷:      由於原理上,application cache是把manifest上的資源一起下載下來,所以manifest裡的內容不宜過多,資料量不宜過大;由於manifest的解析通常以頁面重新整理為觸發點,且更新的快取不會立即被使用,所以快取的資源應以靜態資源、更新頻率比較低的資源為主。另外要做好對manifest檔案的管理,由於清單內檔案不可訪問或manifest更新不及時造成的一些問題。

使用方法:

1.navigator.online  檢測是否線上
2.瀏覽器向服務端發出請求, html標籤中這樣寫: <html manifest=”demo.appcache” >;
這樣瀏覽器就會向請求其它資源一樣向伺服器請求這個名為 test.manifest檔案了。
在伺服器端新增 mime-type text/cache-manifest
3.配置test.manifest 檔案

①CACHE MANIFEST – 在此標題下列出的檔案將在首次下載後進行快取

②NETWORK – 在此標題下列出的檔案需要與伺服器的連線,且不會被快取

③FALLBACK – 在此標題下列出的檔案規定當頁面無法訪問時的回退頁面(比如 404 頁面)

更新:只有server端的manifest檔案改變,瀏覽器才會重新拉取離線資料,需要頁面再次重新整理(2次重新整理才能獲取新資源),更新是全域性性的,無法單獨更新某個檔案。

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

詳解 JavaScript 儲存 詳解 JavaScript 儲存

相關文章