【问题标题】:How prevent browser from caching XML file served by Apache? (My htaccess file is included)如何防止浏览器缓存 Apache 提供的 XML 文件? (包括我的 htaccess 文件)
【发布时间】:2013-06-06 13:45:23
【问题描述】:

更新 2

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

如果我先unlink(即删除)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 );

如果我在没有unlink 的情况下执行上述操作,那么它会被更改并且修改日期在磁盘上更新,但 Apache 继续提供旧版本!为什么?

更新 1 - 尽管启用了 mod_headers,但问题仍然存在!

认为我需要启用模块 mod_headers。

sudo a2enmod headers

但 Chrome 和 Firefox 似乎仍在获取旧版本的 XML 文件!

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

原帖

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

我确定位于 XML 文件夹中的 htaccess 可以正常工作(我通过将其更改为 deny from all 进行了测试,它正确显示了 "Forbidden" 响应)。

.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 可能会在服务器端缓存它!我将如何诊断和阻止它?

认为是这种情况,因为 Chrome 显示了请求标头:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:mywebsite.com
Pragma:no-cache

但它仍然显示缓存的版本!

【问题讨论】:

    标签: xml apache .htaccess caching webserver


    【解决方案1】:

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

    如果我先unlink(即删除)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 );
    

    如果我在没有unlink 的情况下执行上述操作,那么它会被更改并且修改日期在磁盘上更新,但 Apache 继续提供旧版本!为什么?

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,就我而言,它与 VirtualBox 和共享文件夹有关。

      为我解决的问题是更新 Apache 配置并禁用 sendfile:

      EnableSendfile off
      

      见:

      Web server seems to keep serving old images, issue with Apache & VirtualBox?

      Shared folder in VirtualBox for Apache

      http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile

      【讨论】:

        猜你喜欢
        • 2017-02-06
        • 2013-02-09
        • 1970-01-01
        • 2016-06-20
        • 2019-01-02
        • 1970-01-01
        • 1970-01-01
        • 2017-07-30
        • 2012-12-14
        相关资源
        最近更新 更多