4

我正在尝试基于客户端Accept标头实现内容协商,以便接受的客户端image/webp获取 webp 图像,而没有获取普通旧 jpeg 的客户端。webp 和 jpeg 图像从同一个 url 提供,即 /images/foo-image/ 并且返回的内容因Accept客户端提供的标头而异。现在这在我的网站上效果很好。

下一个挑战是让这个工作的 AWS CloudFront 放在我的站点前面。我将Vary标头设置Vary: Accept为让 CloudFront 知道它必须根据客户端Accept标头缓存和提供不同的内容。

不幸的是,这似乎不起作用,即 CloudFront 只是提供它首先得到的任何东西,Vary尽管如此Accept。有趣的是,CloudFront 似乎确实能够根据Accept-Encoding(即 gzip)改变内容。

有谁知道给了什么?

4

2 回答 2

4

事实证明,这被记录为不应该工作:

The only acceptable value for the Vary header is Accept-Encoding. CloudFront ignores other values.

更新: AWS 现在支持更复杂的内容协商。我写了一篇关于如何利用这一点的博客文章。

于 2013-05-14T14:49:50.940 回答
2

只是为了更新这个问题,CloudFront 现在支持不同标头的缓存,因此您现在可以执行此操作

于 2014-07-18T14:51:04.450 回答