本地存储的生命周期是什么?

71 阅读2分钟

"本地存储的生命周期是指数据在客户端存储中的存在时间和有效期。不同的本地存储方式有不同的生命周期。

一、Cookie:

  • 生命周期:由设置的过期时间决定,可以设置为会话级别(关闭浏览器后失效)或具体的过期日期。
  • 代码示例:
// 设置 cookie
document.cookie = \"name=value; expires=Wed, 01 Jan 2023 00:00:00 UTC; path=/\";

// 读取 cookie
const cookies = document.cookie;

二、Web Storage(LocalStorage 和 SessionStorage):

  • 生命周期:永久存储或会话级存储,具体取决于使用的是 LocalStorage 还是 SessionStorage。
  • 代码示例:
// 使用 LocalStorage
localStorage.setItem(\"name\", \"value\");
const value = localStorage.getItem(\"name\");

// 使用 SessionStorage
sessionStorage.setItem(\"name\", \"value\");
const value = sessionStorage.getItem(\"name\");

三、IndexedDB:

  • 生命周期:永久存储,除非主动删除或者浏览器清除数据。
  • 代码示例:
// 打开数据库
const request = window.indexedDB.open(\"database\", 1);

// 创建存储对象
request.onupgradeneeded = function(event) {
  const db = event.target.result;
  const objectStore = db.createObjectStore(\"store\", { keyPath: \"id\" });
};

// 存储数据
request.onsuccess = function(event) {
  const db = event.target.result;
  const transaction = db.transaction(\"store\", \"readwrite\");
  const objectStore = transaction.objectStore(\"store\");
  objectStore.add({ id: 1, name: \"value\" });
};

// 读取数据
request.onsuccess = function(event) {
  const db = event.target.result;
  const transaction = db.transaction(\"store\", \"readonly\");
  const objectStore = transaction.objectStore(\"store\");
  const request = objectStore.get(1);
  request.onsuccess = function(event) {
    const value = event.target.result.name;
  };
};

四、Cache API:

  • 生命周期:根据缓存策略决定,可以设置为持久缓存或具有一定有效期的缓存。
  • 代码示例:
// 创建缓存
caches.open(\"cacheName\").then(function(cache) {
  // 存储响应
  cache.put(request, response);
});

// 读取缓存
caches.match(request).then(function(response) {
  if (response) {
    // 使用缓存
  } else {
    // 发起网络请求
  }
});

总结: 不同的本地存储方式具有不同的生命周期。Cookie 可以设置过期时间,Web Storage 可以永久存储或会话级存储,IndexedDB 可以永久存储,而 Cache API 可以根据缓存策略设置有效期。根据业务需求选择适合的本地存储方式,合理设置数据的生命周期,以保证数据的正确性和有效性。"