html5 的 localStorage 可否设置数据的时效时间?

发布于 2022-08-30 00:03:19 字数 75 浏览 22 评论 0

html5 的 localStorage 用于存储一些临时的离线数据,当超过一定时间后,我希望清除这些数据防止爆仓,有什么好方法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

失退 2022-09-06 00:03:19
if (+new Date() > +new Date(2014, 11, 30)) {
    localStorage.removeItem("c");    //清除c的值
    // or localStorage.clear();
}

不过有一点,请不要用localStorage保存机密数据,即便你已加密,也不安全哟~

来日方长 2022-09-06 00:03:19

localStorage本身不带时效的,你可以自己存储一个cache time然后判断一下就好了。

站稳脚跟 2022-09-06 00:03:19

html5 的 localStorage 用于存储一些临时的离线数据

localStorage 和 file、database 一样,是存储,有永久性质。

你存入数据库的数据,不会在某一天突然被删除了。

你保存到硬盘里面的文件,也不会再某一天突然消失了。

所以,localStorage 本身没有时效性,因为 storage 毕竟不是 ceche。

因此,只能用 js 手动清除了。

那么现在问题来了,js 是客户端脚本,也就是说,只有用户在浏览这个网页的时候,才可能运行 js 脚本来清除,如果用户不再访问本网站,那怎么清除呢?

没有办法清除。

摇划花蜜的午后 2022-09-06 00:03:19

localStorage 是持久化的存储,不是缓存级别的,和sqllite一样,所以也就不存在什么超时时间的概念。只能手动清除,可以自己写一些业务逻辑去判断在什么时机清除

不忘初心 2022-09-06 00:03:19

localStorage本身不带时效的。
为此我build了一个项目扩展了localStorage。可以实现设置失效时间:https://github.com/WQTeam/web-storage-cache

栀子花开つ 2022-09-06 00:03:19

使用locache这个是localStorage的插件可以使用它定义的接口设置过期时间

Hello爱情风 2022-09-06 00:03:19

em 好像无法解决题主的爆仓问题,只能实现时效功能,还是贴在这里做个参考吧


简单一点写两个方法就好了

        /**
       * 设置cookie
       * @param {[type]} key   [键名]
       * @param {[type]} value [键值]
       * @param {[type]} days  [保存的时间(天)]
       */
      setCookie: function (key, value, days) {
        // 设置过期原则
        if (!value) {
          localStorage.removeItem(key)
        } else {
          var Days = days || 7; // 默认保留7天
          var exp = new Date();
          localStorage[key] = JSON.stringify({
            value,
            expires: exp.getTime() + Days * 24 * 60 * 60 * 1000
          })
        }
      },
      getCookie: function (name) {
        try {
          let o = JSON.parse(localStorage[name])
          if (!o || o.expires < Date.now()) {
            return null
          } else {
            return o.value
          }
        } catch (e) {
            // 兼容其他localstorage 
          console.log(e)
          return localStorage[name]
        } finally {
        }
      },
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文