如何为 Web 服务器上的特定文件设置缓存控制标头?我正在运行 LAMP 环境。我不想在整个网站范围内设置缓存控制,只想为一些文件设置缓存控制。我正在使用 CloudFront 分发来自我的一个域的内容。这里没有 S3 绑定。默认情况下,内容在 24 小时后过期,这对于网站上的大多数数据来说都没问题,但是,有几个页面我希望只设置 1 小时的缓存限制。
答案1
亚马逊 CloudFront(大部分)遵循常规 HTTP 缓存控制机制(参见RFC 2616) 记录在Amazon CloudFront 对象过期, 具体来说:
您可以使用 Cache-Control、Pragma 或 Expires 标头指定更长的过期时间在源服务器上的对象上。 [...] CloudFront 不限制它们的最大值。
您可以指定的最短到期时间为 1 小时。如果您指定的最短时间少于 1 小时,CloudFront 将使用 1 小时。
[重点是我的]
因此,您必须协调您的 LAMP 堆栈以将所需的Cache-Control: max-age=3600
标头专门应用于这些对象/页面,然后 CloudFront 将在随后的来源提取期间自动获取这些对象/页面。
具体如何实现取决于用于提供内容的工具/技术,例如:
- Apache - 一个很好的教程,其中包含几个示例配置以及如何使用 Apache 进行操作的提示,似乎是如何在 Apache 中使用 .htaccess 启用文件缓存
- PHP - 一个简洁的教程,特别是针对 PHP 的一个很好的例子HTTP 缓存
关于缓存的总体概述,我推荐 Mark Nottingham 的缓存教程。
答案2
仅供参考,上述答案仍然正确,但在某些方面略微过时,因为 Cloudfront 现在支持最小 TTL 为 0。
亚马逊开发人员指南:到期1