Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 为什么Apache在缓存方面对某些文件有不同的处理方式?_Ajax_Apache_Caching - Fatal编程技术网

Ajax 为什么Apache在缓存方面对某些文件有不同的处理方式?

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,

基本问题:我正在开发一个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的问题

  • 不,我没有关掉eTag,我可以试着在我有空的时候做 回到办公室
  • 更改:接受编码,用户代理
  • 不知道,我正在运行一个默认安装的统一服务器,使用Apache进行本地开发,无需修改。(内容长度可能不存在,因为服务器返回304时没有内容。)
  • 编辑-2
    我注意到Apache没有GZip PNG文件(根据Fiddler的说法,它实际上会更大,所以很有意义)。如果我从请求中删除Accept编码以及从etag中删除'-gzip',Apache将为XML文件返回304。此文件的GZip压缩比为10:1,因此理想情况下,最好进行压缩,但在适当的时候仍发送304。

    当您重放条件请求时,是否为XML文件选择了适当的ETAG?“更改响应”标题中有什么内容?“为什么你的PNG没有内容长度和上次修改?”covener回答了这个问题。再次尝试了上述实验,这次替换了eTag。没有帮助。