我正在使用具有iframe的应用程序 - 外部html正文和框架都需要某些javascript和CSS文件。为了减少加载时间,所有这些静态文件的有效期都设置为从现在开始一年,并且基本上应该从缓存中加载正常页面命中 - 这是IE8和FF3.6中的预期行为
但是,一旦我重新加载/刷新(F5)页面,我希望浏览器向服务器发送“If-Updated-Since”请求以获取这些文件。 IE8发送对在外部以及iframe内使用的所有文件的请求。但是,FF3.6只发送外部使用的文件请求(不是iframe中使用的文件,只是从缓存中加载!)。
所有文件的响应标头都完全相同,无论它们是否在iframe中。 FF的这种行为有原因吗?有什么办法可以避免吗?
注意:我可以将版本参数附加到源代码,或者在路径中添加版本文件夹等。但是,我想知道是否可以避免这个怪癖/背后有充分的理由吗?
答案 0 :(得分:0)
Firefox行为正常 - 服务器表明这些脚本一年有用,因此没有理由发送浪费时间,带宽和服务器资源的无意义请求。出于调试目的,您可以在单击“重新加载”按钮时按住Shift键,这将确保刷新所有数据。但是,对于最终用户,将版本信息添加到URL(例如http://example.com/.../script.js?version=1.2.3
)可能是最佳解决方案。这样可以确保只要缓存版本有效就可以使用缓存版本,并在更新脚本后立即下载新版本。