我通过内容协商提供一系列资源。
具体地说,任何URL都可以用不同的格式表示,
取决于客户端的Accept
标题。
这方面的一个例子可以在Facebook上看到:
curl -H "Accept: application/json" http://graph.facebook.com/daft-punk
curl -H "Accept: text/turtle" http://graph.facebook.com/daft-punk
我正在寻找一个基于URL和客户端Accept
标题来缓存内容的 CDN 。
CloudFlare不支持此功能:如果一个客户端请求HTML,则对该URL的所有后续请求都会收到HTML表示形式,而不管其首选项如何。 Others have similar issues.
例如,如果我将CloudFlare置于graph.facebook.com
之上(并将其配置为缓存“无扩展”资源,默认情况下不会这样),那么行为不正确:< / p>
http://graph.facebook.com/daft-punk
; http://graph.facebook.com/daft-punk
(因此是HTML); 正确行为将是CloudFlare再次询问服务器,因为第二个客户端具有不同的Accept
标头。
在此之后,可以从缓存中提供具有类似Accept
标头的请求。
哪些CDN解决方案支持内容协商,还缓存协商内容?
所以请注意,仅尊重接受是不够的;协商响应也应该缓存。
PS1:很容易让自己的缓存服务器支持它。例如,对于nginx:
proxy_cache_key "$scheme$host$request_uri$http_accept";
请注意客户端的Accept
标头是如何为缓存编制索引的密钥的一部分。我希望在CDN上播放。
PS2:不能为不同的表示使用不同的URL。我的应用程序位于Linked Data域中,其中URL在识别中起着重要作用。
答案 0 :(得分:0)
似乎maxcdn仍然可以为内容协商设置自定义nginx规则(尽管他们的常见问题解答说明了) - http://blog.maxcdn.com/how-to-reduce-image-size-with-webp-automagically/#comment-1048561182
答案 1 :(得分:-2)
我想不出我们现在会对此产生任何影响。例如,我们不会cache HTML by default。你真的看到过这个问题吗?你有没有开过支持票?