【问题标题】:How do I prevent javascript written content from being stored in Firefox's wyciwyg cache?如何防止 javascript 编写的内容存储在 Firefox 的所见即所得缓存中?
【发布时间】:2011-04-14 00:06:50
【问题描述】:

我正在处理用户数据,无法缓存它。

我正在使用 Firefox 4 和 Tomcat 6 服务器进行测试,其中缓存控制设置为 no-cache、no-store、private、must-revalidate、max-age=0。我还设置了 expires 标头。

但 Firefox 仍然是在其缓存中生成所见即所得(what-you-cache-is-what-you-get)文件。这可能被认为是一种历史机制而不是一种缓存机制。但它仍然存储用户数据。

一个例子是http://www.w3schools.com/Ajax/ajax_example.asp。 在 Firefox 4.0 中,about:cache(特别是 about:cache?device=disk)页面显示 wyciwyg:// 文件以及设置为“无过期时间”的过期日期。更糟糕的是,缓存在浏览器关闭并重新启动后仍然存在。

经过调查,对我来说,所见即所得是使用 document.write() javascript 调用的内容生成的。

它如何防止 Firefox 缓存它?理想情况下不更改 document.write()?

【问题讨论】:

    标签: javascript html web-services firefox


    【解决方案1】:

    您是否与 Firebug 确认缓存标头实际上已发送到浏览器?

    但无论如何,有一个简单的解决方案可以防止缓存:在请求 URL 中添加时间戳参数。

    url = '/my/ajax/script?_=' + new Date().getTime();
    

    这个技巧也被许多 JS 库使用。如果您使用的是 jQuery,只需将 cache: false 传递给 AJAX 请求选项即可。

    【讨论】:

    • Firebug 显示缓存标头。这可以防止缓存实际的 html 文件。我现在关心的部分是document.write()写的内容。例如 document.write("个人信息");将创建一个 wyciwyg:// 文件,其中包含“人员信息”。
    • 为什么需要防止缓存这个?问题是它首先写入缓存,还是它错误地从缓存中加载陈旧数据?
    • 问题是它写入缓存。浏览器不会在我的设计中加载过时的数据。但我不喜欢将个人数据保留在客户端本地计算机浏览器缓存中。
    猜你喜欢
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多