【问题标题】:jQuery clear cache on logout退出时jQuery清除缓存
【发布时间】:2011-10-05 05:46:38
【问题描述】:

当用户从我的移动应用注销时,我如何确保缓存被清除?

我正在考虑的是将/logout重定向到清除缓存并重定向到首页的特定页面,但是如何从缓存中清除所有内容?

我正在使用 jQuery Mobile 1.0b2pre。

【问题讨论】:

  • 更新:服务器端 Cache-Control 等不起作用。我们需要 JavaScript 来做到这一点。
  • 因为 jQuery 将每个页面加载到 DOM 中,之后甚至不会查询服务器,除非您手动告诉它这样做。

标签: javascript jquery caching jquery-mobile


【解决方案1】:

我是这样解决的:

我的/logout 操作在后端销毁用户会话时重定向到/exit,它的id 属性为exitPage。 在我的 JavaScript 中,我要求 jQuery Mobile 在该页面即将创建时触发。然后我清空 DOM 并重定向到首页。

/退出:

<div data-role="page" id="exitPage"></div>

/my.js:

jQuery('#exitPage').live('pagebeforecreate', function(){
    jQuery(document).empty();
    window.location.replace('/');
});

【讨论】:

    【解决方案2】:

    为避免更改所有页面的 URL,您可以根据会话 ID 在会话中的每个响应中发送一个 ETag 标头。如果您还包括Cache-Control:must-revalidate,这应该可以解决问题。

    【讨论】:

    • 服务器端无法工作,因为动态页面已经使用Cache-Control。 jQuery Mobile 缓存内容,我需要一种从 jQuery Mobile 缓存中删除任何内容的方法。
    【解决方案3】:

    您无法清除缓存。但是您可以做的是根据他的会话 ID 识别用户,并将其附加到资产 url someimage.png?cachecontrol=blablalba 下次进入时,他将拥有一个新的会话 ID,因此即使旧文件仍然存在,他也会获得新文件在缓存中。另一种解决方案是将缓存控制标头显式设置为无缓存。但你不能强迫他的浏览器清除它的缓存

    【讨论】:

    • 我不担心图像等的缓存,只担心页面内容。像用户设置页面等。
    • 您可以将缓存内容添加到所有内容,而不仅仅是图像。这只是一个例子。对于敏感页面,您可以通过标题告诉浏览器它根本不应该缓存它。
    • 我想缓存所有内容。但是当用户注销时,页面内容缓存应该被清除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2017-12-21
    • 2017-10-01
    • 1970-01-01
    • 2016-05-09
    • 2012-06-29
    • 2019-08-26
    相关资源
    最近更新 更多