我正在尝试实现基于客户端Accept头的内容协商,以便接受image/webp的客户端获得webp图像,而不接受普通旧jpeg的客户端获得webp图像。webp和jpeg图像来自相同的url,即/ image /foo-image/,并且返回的内容在客户端呈现的Accept报头上有所不同。现在这在我的网站上运行得很好。
下一个挑战是让这个工作的亚马逊网络服务CloudFront坐在我的网站前面。我将Vary标头设置为Vary: Accept,以便让CloudFront知道它必须基于客户端Accept标头缓存和提供不同的内容。
不幸的是,这似乎不起作用,即尽管有Vary和Accept,但CloudFront只提供它首先得到的东西。有趣的是,CloudFront似乎确实能够基于Accept-Encoding (即gzip)来改变内容。
有人知道是什么原因吗?
发布于 2013-05-14 22:49:51
事实证明,这是不应该工作的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。
发布于 2014-07-18 22:51:04
为了更新这个问题,CloudFront现在支持按不同的标头进行缓存,所以现在可以这样做了
https://stackoverflow.com/questions/16510700
复制相似问题