【问题标题】:PHP Cache Headers with CDN带有 CDN 的 PHP 缓存标头
【发布时间】:2012-09-07 13:08:52
【问题描述】:

我正在尝试使用 php header() 函数为我的页面设置缓存标头。我有一个缓存 http 请求的 CDN。我在这里想要实现的是 CDN 应该将我的页面缓存 2 天,并且浏览器应该每 5 分钟检查一次 CDN 的新版本。

Cache-Control: max-age=300, s-maxage=172800, public

这个avoe缓存头工作吗?

【问题讨论】:

    标签: php apache .htaccess cache-control


    【解决方案1】:

    这个avoe缓存头工作吗?

    你为什么不知道你的流量?

    Manual:

    s-maxage
       If a response includes an s-maxage directive, then for a shared
       cache (but not for a private cache), the maximum age specified by
       this directive overrides the maximum age specified by either the
       max-age directive or the Expires header.
    

    是的,它应该可以工作 - 但在客户端上使用比在中间代理上更短的到期时间是没有意义的(除非客户端可能在不同的 CDN 区域之间移动并且内容是特定于 CDN 区域的)。

    【讨论】:

    • 原因是我可以随时清除CDN上的缓存,但无法触摸用户浏览器上的缓存。假设,如果我在添加内容后的 6 小时内更改内容,我可以清除 CDN 副本,而用户仍会看到新副本。
    • ...如果内容是通过您无法控制的二级代理访问的怎么办?
    【解决方案2】:

    expires 标头是您要查找的标头,它告诉所有缓存相关表示的新鲜时间。在那之后,缓存将始终与源服务器核对以查看文档是否已更改。

    另外,如果您的网页没有密码保护,请使用must-revalidate

    您可以在 CDN 上使用一种方法将您的 TTL 设置为 2 天

    【讨论】:

    • 你也应该使用 RTFM:“s-maxage 指令还暗示了 proxy-revalidate 指令的语义”
    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 2013-08-08
    • 2016-05-05
    • 2018-09-18
    相关资源
    最近更新 更多