基本问题:我正在开发一个通过Ajax引入XML文件的Web应用程序。最初我的问题是该文件似乎无限期地在浏览器中缓存,并且从不发出HTTP请求。通过添加“Cache-Control:max-age = 0”请求标头可以轻松缓解这种情况。但是,现在我处于频谱的另一端,服务器总是返回200连同文件内容,而不是304。
用Fiddler调试这个让我更加困惑。最后,我在Fiddler中为一个返回304的PNG文件选择了一个请求。我复制了请求,然后只更改了URL以指向XML文件。然而,尽管具有与304返回的PNG文件相同的请求头,但XML文件仍然返回200。 Apache还为XML文件返回许多其他响应头。 PNG文件仅返回Date,ETag,Server,Connection和Keep-Alive。 XML文件包含所有这些以及Vary,Content-Length,Last-Modified,Accept-Ranges和Server。
我只想像任何其他文件一样缓存XML文件。如果它是服务器上的新内容,则返回新内容,否则以304响应。所以我的问题是,哪些设置导致Apache以不同于PNG文件的方式处理XML文件?感谢。
编辑 - Per Covener的问题
EDIT -2- 我注意到Apache没有GZip PNG文件(根据Fiddler的说法,它实际上会更大,所以很有意义)。如果我从请求中删除Accept-Encoding以及从etag中删除'-gzip',Apache将返回304以获取XML文件。对于这个文件,GZip压缩是10比1,所以理想情况下,压缩但在适当的时候仍然发送304是很好的。