【问题标题】:Apache cache-control max-age cannot be overriddenApache 缓存控制 max-age 不能被覆盖
【发布时间】:2012-11-21 06:35:56
【问题描述】:

我正在尝试在 Apache 2.2 上设置缓存控制属性,以便连接的客户端不会缓存任何内容。我在 httpd.conf 文件中添加了各种 Header 属性,但是这些属性不会覆盖默认的 max-age 和 expires 标头。这些是我在 httpd.conf 中为 Header 属性设置的值:

   Header set Expires "Thu, 01 Dec 2003 16:00:00 GMT"
   Header set Cache-Control "no-store, no-cache, must-revalidate"
   Header set Pragma "no-cache"

生成的标题是:

HTTP/1.1 200 OK
Date: Mon, 03 Dec 2012 18:06:35 GMT
Server: Apache/2.2.21 (Win32) DAV/2
Cache-Control: max-age=86400, no-store, no-cache, must-revalidate
Expires: Tue, 04 Dec 2012 18:06:36 GMT, Thu, 01 Dec 2003 16:00:00 GMT
Content-Length: 548113
Last-Modified: Fri, 14 Sep 2012 22:08:04 GMT
Vary: Accept-Encoding
Pragma: no-cache
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: video/f4f

所以缓存控制标头仍在发送“max-age=86400”,并附加其余属性。我怎样才能完全覆盖这个值?我也尝试使用 mod_expires 模块,这是我对 httpd.conf 所做的编辑,但它似乎没有做任何事情:

<IfModule mod_expires>
    ExpiresActive On
    ExpiresDefault 0
</IfModule>

那么有谁能告诉我如何完全覆盖 Apache 的缓存控制并让每个请求的标头过期吗?我们在 Windows 上为 flash 媒体流服务器运行 Apache 2.2。我想覆盖evertything,因为服务器会根据连接到它的客户端发送许多深奥的格式。

提前致谢。

【问题讨论】:

    标签: flash apache apache2 streaming cache-control


    【解决方案1】:

    在这里试试这个:

    Header unset Expires
    Header set Expires "Thu, 01 Dec 2003 16:00:00 GMT"
    

    我在某处读到最好先删除旧标题。所以unset 规则会做到这一点。

    如果这不起作用,请尝试mod expires:

    ExpiresActive On
    ExpiresByType video/f4f "access minus 9 years" 
    

    【讨论】:

    • 我试过了,它没有用,它只是像我上面发布的结果一样附加。理论上,如果我取消设置并且不设置新值,就不应该有任何标题对吗?
    • @PaysonWelch 试试我的更新。啊,你已经使用了……也许问题是你同时使用了
    猜你喜欢
    • 2017-07-16
    • 1970-01-01
    • 2011-02-25
    • 2015-12-04
    • 2018-05-08
    • 2012-12-02
    • 1970-01-01
    • 2020-12-19
    • 2017-06-07
    相关资源
    最近更新 更多