天天看點

uni-app 中的資料緩存

uni-app 中的資料緩存

uni.setStorage(OBJECT)

表示将資料存儲在本地緩存指定的key中,會覆寫掉原來該key對應的内容,這是一個異步接口。

OBJECT 參數說明

參數名 類型 必填 說明
key String 本地緩存中的指定的 key
data Any 需要存儲的内容,隻支援原生類型、及能夠通過 JSON.stringify 序列化的對象
success Function 接口調用成功的回調函數
fail Function 接口調用失敗的回調函數
complete Function 接口調用結束的回調函數(調用成功、失敗都會執行)

示例

uni.setStorage({
    key: 'storage_key',
    data: 'hello',
    success: function () {
        console.log('success');
    }
});      

uni.setStorageSync(KEY,DATA)

将 data 存儲在本地緩存中指定的 key 中,會覆寫掉原來該 key 對應的内容,這是一個同步接口。

參數說明

參數 類型 必填 說明
key String 本地緩存中的指定的 key
data Any 需要存儲的内容,隻支援原生類型、及能夠通過 JSON.stringify 序列化的對象
try {
    uni.setStorageSync('storage_key', 'hello');
} catch (e) {
    // error
}      

uni.getStorage(OBJECT)

從本地緩存中異步擷取指定 key 對應的内容。

OBJECT 參數說明

參數名 類型 必填 說明
key String 本地緩存中的指定的 key
success Function 接口調用的回調函數,res = {data: key對應的内容}
fail Function 接口調用失敗的回調函數
complete Function 接口調用結束的回調函數(調用成功、失敗都會執行)

success 傳回參數說明

參數 類型 說明
data Any key 對應的内容

示例

uni.getStorage({
    key: 'storage_key',
    success: function (res) {
        console.log(res.data);
    }
});      

uni.getStorageSync(KEY)

從本地緩存中同步擷取指定 key 對應的内容。

參數說明

參數 類型 必填 說明
key String 本地緩存中的指定的 key

示例

try {
    const value = uni.getStorageSync('storage_key');
    if (value) {
        console.log(value);
    }
} catch (e) {
    // error
}      

uni.getStorageInfo(OBJECT)

異步擷取目前 storage 的相關資訊。

平台差異說明

App H5 微信小程式 支付寶小程式 百度小程式
HBuilderX 2.0.3+

OBJECT 參數說明

參數名 類型 必填 說明
success Function 接口調用的回調函數,詳見傳回參數說明
fail Function 接口調用失敗的回調函數
complete Function 接口調用結束的回調函數(調用成功、失敗都會執行)

success 傳回參數說明

參數 類型 說明
keys Array<String> 目前 storage 中所有的 key
currentSize Number 目前占用的空間大小, 機關:kb
limitSize Number 限制的空間大小, 機關:kb

示例

uni.getStorageInfo({
    success: function (res) {
        console.log(res.keys);
        console.log(res.currentSize);
        console.log(res.limitSize);
    }
});      

uni.getStorageInfoSync()

同步擷取目前 storage 的相關資訊。

平台差異說明

App H5 微信小程式 支付寶小程式 百度小程式
HBuilderX 2.0.3+

示例

try {
    const res = uni.getStorageInfoSync();
    console.log(res.keys);
    console.log(res.currentSize);
    console.log(res.limitSize);
} catch (e) {
    // error
}      

uni.removeStorage(OBJECT)

從本地緩存中異步移除指定 key。

OBJECT 參數說明

參數名 類型 必填 說明
key String 本地緩存中的指定的 key
success Function 接口調用的回調函數
fail Function 接口調用失敗的回調函數
complete Function 接口調用結束的回調函數(調用成功、失敗都會執行)

示例

uni.removeStorage({
    key: 'storage_key',
    success: function (res) {
        console.log('success');
    }
});      

uni.removeStorageSync(KEY)

從本地緩存中同步移除指定 key。

參數說明

參數名 類型 必填 說明
key String 本地緩存中的指定的 key

示例

try {
    uni.removeStorageSync('storage_key');
} catch (e) {
    // error
}      

uni.clearStorage()

清理本地資料緩存。

示例

uni.clearStorage();      

uni.clearStorageSync()

同步清理本地資料緩存。

示例

try {
    uni.clearStorageSync();
} catch (e) {
    // error
}      

 注意:

uni-app的Storage在不同端的實作不同:

  • H5端為localStorage,浏覽器限制5M大小,是緩存概念,可能會被清理
  • App端為原生的plus.storage,無大小限制,不是緩存,是持久化的
  • 各個小程式端為其自帶的storage api,資料存儲生命周期跟小程式本身一緻,即除使用者主動删除或超過一定時間被自動清理,否則資料都一直可用。
  • 微信小程式單個 key 允許存儲的最大資料長度為 1MB,所有資料存儲上限為 10MB。
  • 支付寶小程式單條資料轉換成字元串後,字元串長度最大200*1024。同一個支付寶使用者,同一個小程式緩存總上限為10MB。
  • 百度、位元組跳動小程式文檔未說明大小限制

除此之外,其他資料存儲方案:

  • H5端還支援websql、indexedDB、sessionStorage
  • App端還支援​​SQLite​​​、​​IO檔案​​等本地存儲方案。

繼續閱讀