【问题标题】:HTTP Content-type header for cached files缓存文件的 HTTP 内容类型标头
【发布时间】:2010-04-29 20:08:02
【问题描述】:

将 Apache 与 mod_rewrite 结合使用,当我加载 .css 或 .js 文件并查看 HTTP 标头时,仅在第一次加载时正确设置了 Content-type - 随后的刷新完全缺少 Content-type 并且它正在创建对我来说有些问题。

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

但是,我不想这样做,因为缓存很好,我想要的只是 Content-type 存在。我尝试使用 RewriteRule 来强制输入类型,但仍然没有解决问题。有什么想法吗?

谢谢,布赖恩

【问题讨论】:

  • 可能会丢失,因为后续请求仅验证您的副本没有过期。你能粘贴每个案例的响应头吗?
  • 我已经用标题输出更新了原始帖子。谢谢。
  • 这就是我的想法。看第二个响应“HTTP/1.1 304 Not Modified”,它没有返回js文件,只是让大家知道客户端上存储的副本是新鲜的。您对此有什么问题?
  • 我对 gzip 有点困惑。使用缓存文件时,我的 .js 和 .css 文件未显示为压缩文件。
  • 注意——也许我应该把它放在 serverfault 上——我已经在那里开了一个帖子,所以如果有必要可以关闭它。

标签: apache http-headers


【解决方案1】:

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

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

我不认为它像你想象的那样破碎。启动 Wireshark 并亲自查看 - 或者只是禁用这些内容类型的缓存。

C.

【讨论】:

  • 首先确认这没有被破坏。我刚刚使用了 gzip,并且未压缩的文件已经被缓存,所以没有任何内容显示为压缩。通过 URL 强制重新加载会显示正确的结果,但直到我进行了更彻底的缓存清理,问题才完全解决。感谢您的帮助。
猜你喜欢
  • 2014-04-30
  • 2016-04-17
  • 2016-05-09
  • 1970-01-01
  • 2014-04-18
  • 2011-09-30
  • 2013-10-01
  • 1970-01-01
相关资源
最近更新 更多