我正在尝试基于客户端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)改变内容。
有谁知道是什么给出了什么?
答案 0 :(得分:4)
事实证明这是documented因为不应该起作用:
The only acceptable value for the Vary header is Accept-Encoding. CloudFront ignores other values.
更新: AWS now has support for more sophisticated content negotiation。我写了blog post on how to take advantage这个。
答案 1 :(得分:1)
为了更新这个问题,CloudFront现在支持不同标头的缓存,因此您现在可以执行此操作