首页  >  问答  >  正文

javascript - 如何在浏览器不同标签页中共享数据?localStorage和sessionStorage是否可行?

概述: 一个系统登录后,存在一个页面配置一些信息,然后配置完信息可以继续操作其他页面,但是我一般的操作习惯是打开两个标签页,一个标签页就是配置页面一直打开着,另一个标签页就是操作页面;

需求1: 目前我是将部分配置信息放入sessionStorage中,但是两个标签页的sessionstorage是不共享的,只有当前页面配置当前页面操作其他页面才有效,至于不用localStorage的原因是配置信息会一直存着,下次登录后不会更新配置信息。

需求2: 目前前台获取sessionStorage中的信息的逻辑是这样的,如果存在该item并且不为空,便直接用了,不会去后台取,这样的问题是多用户端场景时,其他用户更改了配置,当前客户端不能及时获取最新配置信息,我有一个思路是参照http 3xx的做法,每次前台get配置信息时,都往后台放松一个请求,如果lastmodifiedtime不变的话,继续用本地的数据,一旦变了便返回最新的配置信息,各位有什么好的建议一起分享出来吧!

不知有没有大侠有比较好的思路和建议

ringa_leeringa_lee2733 天前1115

全部回复(4)我来回复

  • 仅有的幸福

    仅有的幸福2017-05-19 10:13:00

    如果我面对这样的需求,我的做法:

    需求1: 采用LocalStorage, 但是Key名会携带过期时间,比如item&1494485763;

    需求2: 每次请求配置项,request 请求携带最后一次修改时间的cookie值;如果最后修改时间相同,则空返回,使用本地数据;否则返回最新的配置项;

    回复
    0
  • phpcn_u1582

    phpcn_u15822017-05-19 10:13:00

    localStorage,然后你在登录页welcome那个页面重置一下,不就可以了吗?

    然后需求2就是设置一下过期时间呗。如果上次一个的localstorage过了十分钟了。重新拉取一次数据。

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:13:00

    localStorage 或者 indexedDB 均可;
    对于缓存的数据的处理,可以设计过期机制,也可以对每次的事务生成 UUID,事务全部完成以后清理掉缓存。

    回复
    0
  • 世界只因有你

    世界只因有你2017-05-19 10:13:00

    localStorage完全可以解决,在你存储的信息有变化的情况下,更新下localStorage中对应的存储信息就可以了。当然如果有敏感信息是不能存储在浏览器的。

    回复
    0
  • 取消回复