首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些CDN解决方案支持内容协商缓存?

哪些CDN解决方案支持内容协商缓存?
EN

Stack Overflow用户
提问于 2013-11-27 12:39:57
回答 2查看 1.2K关注 0票数 13

我通过内容协商为一组资源提供服务。具体而言,任何URL都可以以不同的格式表示,这取决于客户机的Accept头。

这方面的一个例子可以在Facebook上看到:

  • curl -H "Accept: application/json" http://graph.facebook.com/daft-punk JSON的结果
  • curl -H "Accept: text/turtle" http://graph.facebook.com/daft-punk 海龟的结果

我正在寻找一个CDN,它基于URL和客户端的Accept头缓存内容。

错误的例子

CloudFlare不支持这一点:如果一个客户机请求HTML,那么对该URL的所有后续请求都会接收HTML表示,而不管它们的首选项如何。其他国家也有类似的问题。

例如,如果我将CloudFlare放在graph.facebook.com上(并将其配置为缓存“无扩展”资源(默认情况下不是这样),那么的行为将不正确--

  1. 我要求http://graph.facebook.com/daft-punk在JSON通过卷曲; 作为回应,CloudFlare从服务器询问JSON原件,缓存它,并提供它。
  2. 我通过浏览器请求http://graph.facebook.com/daft-punk (因此在HTML中); 作为响应,CloudFlare发送缓存的JSON (!)表示,即使原始服务器已经发送了HTML版本。

取而代之的是需要什么

正确的行为将是CloudFlare再次询问服务器,因为第二个客户端具有不同的Accept头。在此之后,可以从缓存中处理具有类似Accept头的请求。

哪些CDN解决方案支持内容协商,以及缓存协商内容?

因此请注意,只有尊重接受是不够的;谈判的反应也应该缓存。

PS1:让您自己的缓存服务器支持它很容易。例如,对于nginx:

代码语言:javascript
复制
proxy_cache_key "$scheme$host$request_uri$http_accept";

注意客户端的Accept头是索引缓存的键的一部分。我想在CDN上看到这个。

PS2:对于不同的表示,使用不同的URL并不是一种选择。我的应用程序在http://en.wikipedia.org/wiki/Linked_data域中,URL在识别中扮演着重要的角色。

EN

回答 2

Stack Overflow用户

发布于 2013-12-18 19:09:26

看来maxcdn仍然可以为内容协商建立自定义的nginx规则(不管他们的faq怎么说)- http://blog.maxcdn.com/how-to-reduce-image-size-with-webp-automagically/#comment-1048561182

票数 0
EN

Stack Overflow用户

发布于 2013-12-02 19:41:41

我想不出在这个时候我们有什么办法能影响到这件事。例如,我们不需要默认情况下缓存HTML。你真的看到这个有问题了吗?你开了支持票吗?

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20242780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档