2010-04-29 184 views
0

使用Apache和mod_rewrite,当我加载.css或.js文件并查看HTTP标头时,Content-type只在第一次加载时正确设置 - 后续刷新是完全缺少Content-type,它为我创造了一些问题。用于缓存文件的HTTP内容类型标头

我可以通过将随机查询字符串值附加到每个文件名的末尾来解决此问题,例如。 http://www.site.com/script.js?12345

但是,我不想这样做,因为缓存是好的,我只想让内容类型存在。我试过使用RewriteRule来强制类型,但仍然没有解决问题。有任何想法吗?

感谢布

+0

可能是错过的,因为随后的请求只验证您的副本没有陈旧。你可以粘贴每个案件的回应标题吗? – 2010-04-29 20:12:25

+0

我已经更新了标题输出的原始文章。谢谢。 – Brian 2010-04-29 20:23:58

+0

这就是我的想法。看看第二个响应“HTTP/1.1 304 Not Modified”它不会返回js文件,只是让每个人都知道客户端上存储的副本是新鲜的。你面临什么问题? – 2010-04-29 20:27:22

回答

0

答案取决于你不在这里提供的信息,特别是你在哪里看到这些标题?

除非是嗅探浏览器和客户端之间的网络流量,否则您无法确定您是在查看对服务器的真实请求还是从缓存中满足的请求。事实上,如您所描述的那样更改URL是强制从服务器重新加载而非从缓存加载的一种非常简单的方法。

我不认为它像你似乎破碎。启动Wireshark并亲自查看 - 或者仅对这些内容类型禁用缓存。

C.

+0

确认这并没有被打破。我刚刚使用gzip,并且未压缩的文件已被缓存,因此没有任何内容显示为压缩文件。强制通过URL重新加载会显示正确的结果,但直到我做了更彻底的缓存清理,问题才得到完全解决。谢谢您的帮助。 – Brian 2010-04-30 15:03:34