【问题标题】:Convince a browser to cache a DOM altered by JavaScript说服浏览器缓存由 JavaScript 更改的 DOM
【发布时间】:2011-04-29 09:42:02
【问题描述】:

我有一个 Web 应用程序,其首页上有一个登录表单。当登录表单被提交时,一些 JavaScript 诡计发生在幕后,用户的数据出现了——没有页面加载。

问题在于,当用户离开页面,然后使用后退按钮返回时,页面处于其原始的未登录状态。我可以让浏览器缓存更改后的 DOM 吗?

【问题讨论】:

标签: javascript browser-history


【解决方案1】:

您可以尝试使用这样的插件:http://benalman.com/projects/jquery-bbq-plugin/

您必须在您的网址中生成一个#logged 链接,当您点击历史记录时,您只需重新请求用户信息。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我冒昧地猜测,与其在客户端上存储用户登录数据(无论如何这都是个坏主意),不如将一些类似的东西放在一起会是一个更好的主意:

    1. 修复“jiggery-pokery”,使其不会损坏。

      • 我的意思是:它并没有真正让用户登录,它只是给他们一种登录的错觉
      • 因此您需要对其进行更改,以便它存储一些信息(可能在会话中),以验证他们是否已登录。
    2. 一旦问题得到修复,您的页面就可以检查该信息并显示“已登录”的 DOM。

      • 如果他们没有登录,它仍然使用旧的 JS 方法显示原始,登录并更新 DOM(第一次)。

    有意义吗?

    当前流量:

    1. 访问网站

    2. JS 登录

    3. 更新 DOM

    新流程:

    1. 访问网站

    2. 检查是否登录

    3. 提供适当的 DOM

    4. JS 登录

    5. 后端存储登录信息

    6. JS 更新 DOM。

    【讨论】:

    • 按下后退按钮时浏览器不会向服务器发出请求,因为页面已被缓存。我试图避免在Cache-control 中设置 no-store。
    • 嗯,解决方案是让 Javascript 在页面加载之前检查用户是否登录,如果是,则显示登录的 DOM。不过,这仍然不能修复损坏的登录系统:-/ 给人一种登录的错觉似乎会在未来造成更多的麻烦。
    • 这不是错觉——我真的在他们的浏览器中设置了一个cookie。我只想淡入淡出,而不是让页面加载不和谐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 2011-05-04
    • 2020-11-17
    • 1970-01-01
    相关资源
    最近更新 更多