2011-04-14 52 views
3

我正在处理用户数据,并且无法允许它被缓存。如何防止JavaScript书写的内容被存储在Firefox的wyciwyg缓存中?

我正在使用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://文件,并且在“无过期时间”中设置过期日期。更糟糕的是,浏览器关闭并重新启动后,缓存仍然存在。

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

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

回答

2

您是否使用Firebug检查缓存头是否真的发送给浏览器?

但是,在任何情况下,都有一个简单的解决方案来防止缓存:将时间戳参数添加到请求URL。

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

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

+1

Firebug显示缓存标题。这可以防止实际的html文件被缓存。我现在关心的部分是由document.write()写的内容。 例如,document.write(“个人信息”);会创建一个wyciwyg://文件,其中包含“人员信息”。 – user518502 2011-04-14 05:10:38

+0

为什么你需要防止缓存呢?是它首先写入缓存的问题,还是不正确地从缓存中加载过时的数据? – intgr 2011-04-14 08:45:19

+0

问题是它写入缓存。浏览器不会在我的设计中加载陈旧的数据。但我不觉得有个人数据保持在客户端本地机器浏览器缓存。 – user518502 2011-04-14 16:24:35