一. 優化小程序自身的Storage

  1. 小程序中的存儲只有 Storage ,特性以下:
    1. 上限爲 10MB 
    2. 以用戶緯度隔離,同一個設備,A 沒法訪問 B 用戶的數據。 
    3. 持久緩存,只有在用戶關掉小程序纔會刪除,若是空間不足,會進行 LRU ,也就是不常用的小程序的數據緩存區域會被所有清空。
    4. 在體驗版、開發版、和線上版都共用一套,並不會隔離。小程序

    5. 沒有 Cookie瀏覽器

  2.  所以咱們要在 Storage 中隔離一個 Cookie ,用來模擬瀏覽器中的 Cookie ,解析接口返回的 Header,設置 Cookie,在發送接口請求前,自動帶上 Cookie。

從上面知道,storage 不會自動銷燬,而是在小程序銷燬的時候再銷燬。咱們先了解一下小程序的運行機制。緩存

小程序運行機制:微信

  • 小程序沒有重啓的概念
  • 當小程序進入後臺,客戶端會維持一段時間的運行狀態,超過必定時間後(目前是5分鐘)會被微信主動銷燬
  • 置頂的小程序不會被微信主動銷燬
  • 當收到系統內存告警也會進行小程序的銷燬

 

代碼實現:cookie

const storage = {
   set(){}, //設置緩存
   get(){}, //獲取緩存
   remove(){}, // 移除緩存
   checkAndClearExpired(){}, //將過時緩存清理掉 
  
isExpired() {} //判斷是否過時
}

在 storage 中隔離一個字段,用來作 cookie spa

let cookie = (function(){
    return wx.getStorageSync('cookies');
}())
const Cooke = {
  getCookie(){}, //從內存中獲取cookie
  setCookie(){}, // 設置cookie
  setCookieInHeader(){}, //根據response的Header設置cookie
  removeCookie() {},  //刪除cookie
  isExpired() {} //判斷是否過時
}

在設置storage的時候,增長一個字段 expire 用來表示過時時間。簡化代碼以下:code

function isExpired (expires) {
    // 小於等於如今時間爲過時
    if (new Date(expires) <= new Date()) {
        return true;
    }
}

 

這樣子,總體的流程以下:blog

 

 

到底了,不知道是否是愈來愈懶了,博文寫得愈來愈短。。。接口

相關文章
相關標籤/搜索