用于cachingREST API的CDN

我正在对CDN提供商进行一些研究,但是我很难找出哪些是可用的,它们提供了什么,以及它们是否适合我的目的。 希望你们可以给我一些build议:-)

我们正在Amazon EC2实例上托pipe一个公共REST API。 每个通话都是dynamic的,CPU密集型的,但一般来说,活动相当稳定 然而,经常会有很多用途同时请求相同的资源的短高峰。 这发生在某人博客或推特资源链接之后,每个人都点击它。

许多资源不会经常更改,我的服务器正在发送明确的caching控制最大年龄标头指定每个资源可以和应该被caching的时间。 我需要一个Webcaching/反向代理/ CDN,在检查caching控制标题和caching这些服务器调用方面做得很好,这样,如果1000个客户端在一分钟内请求相同的资源,我的服务器只需要服务一次,或者至less不是1000倍。

而且,CDN应该能够caching任何HTTP GET请求,而不pipe内容types或URI。 文件大小的限制是没有问题的; 输出通常简短而紧凑。 我今天正在试验Cloudflare, 但是它们只会根据URI的“文件扩展名”来caching静态文件,这使得大多数REST API完全无用。 最后但并非最不重要的一点,我是一个小型创业公司,所以最好是可以负担得起的东西,并且可以上下调整。

哪些供应商可能适合这些要求? 感谢您的任何经验/build议。

任何能够“原产地获取”(CDN行业术语,我们大多数人称之为反向代理)的CDN都应该做你所需要的。 在低成本,按使用付费的CDN中,我知道这些具有以下特点:

  • Amazon CloudFront
  • MaxCDN
  • Voxel VoxCAST

请注意,使用Akamai作为CDN的Rackspace云文件仅支持上传到其服务器的静态源文件。

一个棘手的问题可能是最小的caching生存期。 快速搅动的内容造成了CDN的问题,CDN被devise用来提供静态内容。 所以如果你设置“Cache-Control:max-age = 5”,一个特定的CDN可能会将其改变为某个最小值,比如3600,或者根本不caching它,并简单地将请求传递回原点。

如果没有使用按次付费的CDN提供的caching生存期尽可能短,则可能需要查看签约的CDN服务。 或者,您最好的select是设置Varnish或Nginx来对一个或多个EC2实例进行caching。

有些公司专门从事APIpipe理服务,包括caching。

我头顶的两个名字:

  1. apigee
  2. Mashery

你可能比传统的CDN有更多的运气。

如果你正在寻找一个内部的反向caching代理,那么我认为Varnish会做得很好。

我不能说其他/更小的CDN,但我已经与Akamai和Level3合作。 我可以告诉你,Akamai肯定可以通过MIMEtypes,甚至通配符匹配来caching。 他们可以做你想要的任何东西,我只是不知道你是否会发现他们在你的预算之内。

一旦通过Akamai,如果所有请求都是www.yoursite.com,并且您希望caching一些内容,那么如果您想节省成本,则需要重新修改您的应用程序。 例如,如果您将其保存在www.yoursite.com,则由于该主机现在被redirect到akamai主机, 所有请求将开始通过Akamai。 任何未configuration为caching的内容都将被代理。

另一方面,您可以重命名您的网站的部分,使您的cookie设置为domain = * http://www.yoursite.com,并重写部分,以便您希望被caching的部分实际上在主机cdn.www.yoursite.com(或者别的什么,你就明白了)。 这意味着任何你不想被caching的东西都直接来源,而cdn.www.yoursite.com子域中的任何东西实际上都会打到akamai。 您将需要在您的原始服务器上进行必要的安排,以便适应这一点。

Akamai有一个计费选项(如果有一个网站的另一种select,只能看到每天1000次的点击)是基于带宽的,这样做可以为您节省一些钱。

说实话,如果你正在谈论的资源静态(足够),以保证caching控制重要的命中,这只是一个成千上万的问题,你可能正在寻求解决错误的问题。 如果这些请求需要在您的Web应用程序的每个请求上进行后端调用,则应该重新进行处理,以便将其caching到应用程序中,并使这种资源的Web请求更便宜。