如何防止javascript写入内容存储在Firefox wyciwyg缓存中?

时间:2011-04-14 00:06:51

标签: javascript html web-services firefox

我正在使用用户数据,不能允许它被缓存。

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

但Firefox仍然在它的缓存中生成一个wyciwyg(你在缓存中是什么)。这可能被认为是历史机制而不是缓存机制。但它仍然存储用户数据。

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

经过调查,对我来说,wyciwyg是用document.write()javascript调用的内容生成的。

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

1 个答案:

答案 0 :(得分:2)

您是否使用Firebug检查了缓存标头是否实际发送到浏览器?

但无论如何,有一个简单的解决方案来阻止缓存:在请求URL中添加一个timestamp参数。

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

许多JS库也使用这个技巧。如果你正在使用jQuery,那么将cache: false传递给AJAX请求选项就足够了。