1. 程式人生 > >H5中快取機制

H5中快取機制

webstorage機制

一、localStorage

用於永久性的進行本地快取,不會自動清除、沒有過期時間,直至手動清除資料。
儲存方式

● 以鍵值對的形式進行儲存 , 儲存的方式只能是String型別。獲取的資料也只能是String型別

window.localStorage.setItem('isDevice','false');
const isDevice = window.localStorage.getItem('isDevice');
if(isDevice){
    console.log("welcome to device");
}else{
    console.log('error');
}
//執行結果
weicome to device
//false只是表示String型別,不能表示boolean型別
常用API
//儲存資料
window.localStorage.setItem('isDevice','false');
//獲取資料
window.localStorage.getItem('isDevice');
//刪除資料
window.localStorage。removeItem('isDevice');
//清空資料
window.localStorage.clear();
//獲取鍵值對
window.localStorage.key(n);

說明:通過getItem獲取到的資料都是String型別,需要根據業務需求將資料轉換為不同的資料型別。

二、sessionStorage

用於本地儲存會話資料
儲存範圍

● 在同一個會話的頁面可以訪問
● 不同的瀏覽器之間不能進行訪問
● 同源視窗不能進行訪問
● 會話結束、視窗關閉後快取失效

儲存方式

鍵值對方式儲存,儲存型別為String型別

常用API

同localStorage


cookie機制

cookie與webStorage的區別

● 資料儲存
cookie的資料始終在http的同源請求中儲存,資料可以在客戶端與伺服器端進行回傳。webStorage的資料只能進行本地儲存,不能向伺服器進行傳遞。
● 生命週期
sessionStorage是會話級別的快取,在當次會話結束後快取資料被清除。
localStorage是永久快取,直到被手動清除
cookie可以設定宣告週期,到該時間失效
● 儲存的資料量
每次http的請求都會攜帶cookie,所以cookie的大小存在限制。cookie儲存資料的大小要求不能超過4k
webStorage資料因為只在本地進行快取,對資料儲存量的可以達到4-5M
● 作用域
sessionStorage的作用在同一次會話之間,不在不同瀏覽器及同源之間進行共享。
localStorage作用在同源瀏覽器之間
cookie的作用域也是在同源瀏覽器之間

cookie常用方法
//儲存cookie
document.cookie = 'userName = Yun '
document.cookie = 'userNmae = Yun ; expires = Thu, 18 Dec 2043 12:00:00 GMT;'
//讀取cookie
const userName = document.cookie;
//修改cookie
document.cookie = 'userName = Zhiyao'
//刪除cookie , 即時間設定為過去的時間即可
document.cookie = 'userName = ;expires = Thu, 18 Dec 2043 12:00:00 GMT;'

說明:在儲存cookie的時候雖然儲存的是string型別,但是獲取到的時候都是以=鍵值對的形式獲取到的資料。在進行獲取資料的時候要對資料進行擷取。

使用示例
function setCookie(cname , name , time) {
   let now = new Date();
   now.getTime(now.getTime()+(time*24*60*60));
   let expires = 'expires = '+ now.toGMTString();
   let username = cname+'='+name;
   document.cookie=username;
}

function getCookie(key) {
   let cookieArr = document.cookie.split(';');
   let name = key+'=';
   for (var k in cookieArr){
     if (cookieArr[k].trim().indexOf(name) === 0 ){
       return   cookieArr[k].trim().substring(name.length,cookieArr[k].trim().length)
     }
   }
   return "";
}

function checkCookie(){
  let name = getCookie('name');
  if (name !== ''){
      alert("歡迎"+name+"再次光臨");
  }else {
    setCookie("name",'song',30);
  }
}

webStorage與cookie的對比

1、webstorage 只儲存在客戶端本地,不佔用頻寬
2、webStorage 可以減少不必要的一些請求
3、webstorage只能儲存在本地,不能與伺服器進行互動
4、webstorage只能手動清除或者臨時儲存,不能自動清除

參考連結:
h5的快取機制
JavaScript設定cookie | 菜鳥教程



來自為知筆記(Wiz)