caching - 使用 Cloudfront 时,如何设置相对于当前日期的过期 header ?

标签 caching http-headers cdn amazon-cloudfront pagespeed

我们正在开发一个大型网站,我们所有的图片和资源都在 Amazon S3 中。我们还使用 Cloudfront 在全局分发我们的内容。我们想要的是告诉客户端 Web 浏览器缓存我们的文件,因为当我们更改它们时,我们也会更改 URL(Cloudfront 不会在其他地方反射(reflect) 24 小时的更改)。

我们目前正在使用 ETag,但这不是最佳选择,因为客户端仍然必须执行请求以检查资源是否已更改。

一个解决方案是 Expires Header,但我们没有找到一种方法来设置它相对于当前日期,就像在 S3 的 Apache 配置中可能的那样,我们不能定期更新所有内容,因为它几乎是。所以我们需要一个配置选项,将 Expires Header 设置为相对于所有内容的当前日期的日期。

另一种解决方案是将 Cache-Control: max-age 设置为某个值。这行得通吗?是否被主流浏览器接受?我会用这个破坏一些缓存算法吗?为什么 YSlow 建议设置 Expires header 而不是 Cache-Control: max-age?

还有其他推荐吗?我们正在压缩 CSS 和 JS,在可能的情况下使用 Sprites,在可能的情况下设置 Expires header 和 ETag,并将很快使用 Yahoo 压缩工具和 gzip 输出压缩我们的图像。

最佳答案

我们对自己做了一些研究。似乎 Cache-Control header 确实有助于告诉 Cloudfront 或代理设置有效的 Expires header ,但只是有时......

我们目前正在编写一个 Cron 作业来定期更新 S3 中的所有标题,因为这是肯定有效的一件事。好像没有别的办法了。如果有的话,我会通知你的。

关于caching - 使用 Cloudfront 时,如何设置相对于当前日期的过期 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4760438/

相关文章:

java - 更新对象缓存 HashMap 的最佳实践

ios - HTTP 请求 header

http - 电话/浏览器是否会缓存 HTTP HEAD 请求

javascript - PCI 合规性 - 脚本源完整性检查

asp.net - 来自cdn的图片,以及SSL的问题

Azure CDN 默认文档index.html

php - 如何在 PHP 文件中使用 etags?

google-app-engine - 缓存谷歌云端点?

google-app-engine - 云端点正在提供缓存响应

Android WebView 为每个响应添加自定义 HTTP header