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檔案等本地存儲方案。