AWS CloudFront,“Vary”标头和内容协商

fri*_*ism 5 http cdn amazon-cloudfront

我正在尝试基于客户端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)改变内容。

有谁知道什么给?

fri*_*ism 6

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

The only acceptable value for the Vary header is Accept-Encoding. CloudFront ignores other values.
Run Code Online (Sandbox Code Playgroud)

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