如何防止浏览器缓存Apache提供的XML文件?(包括我的htaccess文件)

如何防止浏览器缓存Apache提供的XML文件?(包括我的htaccess文件),xml,apache,.htaccess,caching,webserver,Xml,Apache,.htaccess,Caching,Webserver,更新2 我发现了答案,但我不确定为什么需要它,以及如何在Apache中更改这种行为 如果我首先取消链接(即删除)XML文件,然后重新创建它(而不是仅仅在上面写),那么两个浏览器都会看到新版本 //This causes a fresh version unlink( $xmlFileLocation ); //Now creating it will result in a non-cached version being sent $f = fopen( $xmlFileLocation,

更新2


我发现了答案,但我不确定为什么需要它,以及如何在Apache中更改这种行为

如果我
首先取消链接
(即删除)XML文件,然后重新创建它(而不是仅仅在上面写),那么两个浏览器都会看到新版本

//This causes a fresh version
unlink( $xmlFileLocation );

//Now creating it will result in a non-cached version being sent
$f = fopen( $xmlFileLocation, "wb" );
fwrite(, $xmlFileLocation, $xml );
fclose( $xmlFileLocation );
//This causes a fresh version
unlink( $xmlFileLocation );

//Now creating it will result in a non-cached version being sent
$f = fopen( $xmlFileLocation, "wb" );
fwrite(, $xmlFileLocation, $xml );
fclose( $xmlFileLocation );
如果我在没有取消链接的情况下执行上述操作,那么它将被更改,并且磁盘上的修改日期将被更新,但是Apache将继续使用旧版本!!为什么?

更新1-尽管启用了mod_头,但问题仍在发生

我想我需要启用模块mod_头

sudo a2enmod headers
但Chrome和Firefox似乎仍然在使用旧版本的XML文件

是什么导致Apache继续为旧版本服务?(清除浏览器缓存没有帮助,磁盘上的文件与在两种浏览器中看到的文件不同)

原创帖子

我试图阻止浏览器缓存我正在提供的XML文件,但它不起作用。当我在计算机上查看该文件时,它显示该文件已更新,但在浏览器(Chrome和Firefox)中,它显示为旧版本

我确信位于XML文件夹中的htaccess正在工作(我通过将其从all更改为
deny进行了测试,它正确地显示了
“禁止的”
响应)

.htaccess

<FilesMatch ".(xml)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</FilesMatch>

但它仍然显示缓存的版本

我找到了答案,但我不确定为什么需要它,以及如何在Apache中更改这种行为

如果我
首先取消链接
(即删除)XML文件,然后重新创建它(而不是仅仅在上面写),那么两个浏览器都会看到新版本

//This causes a fresh version
unlink( $xmlFileLocation );

//Now creating it will result in a non-cached version being sent
$f = fopen( $xmlFileLocation, "wb" );
fwrite(, $xmlFileLocation, $xml );
fclose( $xmlFileLocation );
//This causes a fresh version
unlink( $xmlFileLocation );

//Now creating it will result in a non-cached version being sent
$f = fopen( $xmlFileLocation, "wb" );
fwrite(, $xmlFileLocation, $xml );
fclose( $xmlFileLocation );

如果我在没有取消链接的情况下执行上述操作,那么它将被更改,并且磁盘上的修改日期将被更新,但是Apache将继续使用旧版本!!为什么?

我也遇到过同样的问题,就我而言,这与VirtualBox和共享文件夹有关

对我来说,解决这个问题的方法是更新Apache配置并禁用sendfile:

EnableSendfile off
见: