我正在尝试基于客户端 Accept
header 实现内容协商,以便接受 image/webp
的客户端获得 webp 图像,而客户端不会变得很旧图片。 webp 和 jpeg 图像从相同的 url 提供,即/images/foo-image/并且返回的内容因客户端提供的 Accept
header 而异。这现在在我的网站上运行良好。
下一个挑战是让这个有效的 AWS CloudFront 坐在我的网站前面。我将 Vary
header 设置为 Vary: Accept
让 CloudFront 知道它必须根据客户端 Accept
缓存和提供不同的内容标题。
不幸的是,这似乎不起作用,即 CloudFront 只是提供它首先得到的任何东西,尽管有 Vary
和 Accept
。有趣的是,CloudFront 似乎确实能够根据 Accept-Encoding
(即 gzip)改变内容。
有人知道是什么吗?
最佳答案
原来这是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
关于http - AWS CloudFront, `Vary` header 和内容协商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16510700/