Ajax 为什么Apache在缓存方面对某些文件有不同的处理方式?
基本问题:我正在开发一个web应用程序,它通过Ajax拉入XML文件。起初,我的问题是文件似乎无限期地缓存在浏览器中,并且根本没有发出HTTP请求。通过添加“Cache-Control:max-age=0”请求头,可以轻松缓解这一问题。然而,现在我站在另一个角度,服务器总是返回200和文件内容,而不是304 用Fiddler调试这个让我更加困惑。最后,我在Fiddler中选择了一个PNG文件请求,该文件返回304。我复制了请求,然后只更改了指向XML文件的URL。然而,XML文件仍然返回200,尽管其请求头与304返回PNG文件的请求头相同。Apache还为XML文件返回许多额外的响应头。PNG文件仅返回日期、ETag、服务器、连接和保持活动状态。XML文件包含所有这些内容以及变量、内容长度、上次修改、接受范围和服务器 我只希望XML文件像其他文件一样被缓存。如果它是服务器上的新内容,则返回新内容,否则以304响应。所以我的问题是,是什么设置导致Apache将XML文件与PNG文件区别对待?谢谢 编辑-根据Covener的问题Ajax 为什么Apache在缓存方面对某些文件有不同的处理方式?,ajax,apache,caching,Ajax,Apache,Caching,基本问题:我正在开发一个web应用程序,它通过Ajax拉入XML文件。起初,我的问题是文件似乎无限期地缓存在浏览器中,并且根本没有发出HTTP请求。通过添加“Cache-Control:max-age=0”请求头,可以轻松缓解这一问题。然而,现在我站在另一个角度,服务器总是返回200和文件内容,而不是304 用Fiddler调试这个让我更加困惑。最后,我在Fiddler中选择了一个PNG文件请求,该文件返回304。我复制了请求,然后只更改了指向XML文件的URL。然而,XML文件仍然返回200,
我注意到Apache没有GZip PNG文件(根据Fiddler的说法,它实际上会更大,所以很有意义)。如果我从请求中删除Accept编码以及从etag中删除'-gzip',Apache将为XML文件返回304。此文件的GZip压缩比为10:1,因此理想情况下,最好进行压缩,但在适当的时候仍发送304。当您重放条件请求时,是否为XML文件选择了适当的ETAG?“更改响应”标题中有什么内容?“为什么你的PNG没有内容长度和上次修改?”covener回答了这个问题。再次尝试了上述实验,这次替换了eTag。没有帮助。