将一些URL请求redirect到CloudFront,其余的直接到正常的服务器?

假设我有两种types的URL请求必须由我的REST API处理:

http://query.restapi.com/image.png?apikey=abc123

http://query.restapi.com/2.0/<apiKey>/resource.json?from=umi.us_census00.state_geometry

只有静态图像(即,正则expression式: *.png?.* )是否需要利用CloudFront的caching,其余的请求不会获得caching的数据,并将需要去正常的EC2服务器(或至less采取更快的间接路由到正常的EC2服务器?)。

也许增加对CloudFront错失的请求时间是无关紧要的?

或者,也许我的情况是不是最好用于CloudFront?

您应该构build您的HTML来为静态内容使用不同的URL主机名。

使用萤火虫来看看任何大型网站公司的主要内容。

Facebook(例如)使用http://static.ak.fbcdn.net静态内容,我假设使用Akamai&#x3002; (另一个像Cloudfront的CDN),其他更less的静态内容直接来自facebook.com。

通过使用CNAME,您可以让自己的生活变得更轻松。

例如。 static.restapi.com – > d1234.cloudfront.net

那么你只需要处理你的页面如何显示,以便使用dynamic页面的主要主机名和静态内容的静态主机名。

你提到上面的“redirect”。 我想确保你不要尝试做HTTPredirect。 如果您的最终用户必须击中您的网站才能获得redirect,那么CDN提供的加速的一大部分已经丢失。 你想要一个主页的命中,然后从靠近最终用户的CDN装载尽可能多的内容。

合理?

正如@JoelK所说,你真的应该使用一个不同的领域来静态内容。 静态域名(例如static.restapi.com)完全由CloudFront提供服务,而EC2实例提供dynamic域名(例如query.restapi.com)。 如果您需要限制对静态资源的访问,请查看CloudFront的签名URL ,以便生成仅在特定时间有效的URL。 (API的用户不应直接引用静态内容 – API应提供静态资源的位置。)

如果您使用从EC2服务器到CloudFront的HTTPredirect,则不会从CloudFront获得任何好处,因为客户端仍然需要向EC2提出每个静态资源的请求。

如果由于某种原因您无法将静态内容托pipe在其他域中,则可以使用CloudFront对dynamic内容的支持。 它允许您为CloudFront分配configuration多个来源,因此您的静态和dynamic内容可以由CloudFront在单个域中提供服务。