技术开发 频道

ASP.NET性能提升之站点部署与内容传输

  在不同国家的节点数量以及一些冗余骨干网络的数量链接到一个CDN时其效果都不一样。一些受欢迎的CDNs有Akamai、 Limelight、EdgeCast。Akamai被很多大公司使用诸如:微软、雅虎、AOL等。一般来说,这是一个比较昂贵的解决方案。然而,Akamai提供的服务器在全球都是非常好的的,因为它们在世界上很多著名的城市都有服务器。此外,Akamai的服务费用也非常贵,他们只接受能够每个月最少花费5千加币在CDN服务上的客户。对于一些小公司,Edgecast是一个更合理的解决方案。


           
  这个数字展示了与浏览器拦截流量和服务器响应最近的节点。如果在缓存中没有响应,它会使用一条更快的路线以及相比于浏览器的ISP所能提供的最优化链接从源服务器上去抓取数据。如果该内容已经缓存,那么会直接从节点上提取数据而不需要在从源服务器上。

  一般来说,会有两种类型的CDNs。一种是通过FTP的方式将内容上传到CDN的服务器上,这种方式你可以在它们的服务器上获得一个子域诸如dropthings.somecdn.net这种形式。你可以从CDN域改变站点上所有的静态内容URL来下载内容而不是指向你自己域的相对URL。因此,一个像/logo.Gif这样的URL会被重命名为http://dropthings.somecdn.net/logo.gif。虽然这种方式很容易配置,但是会出现维护问题。你将不得不一直保持CDN的文件的异步存储。部署会变得十分复杂,因为你需要同时更新你的网站和CDN存储。这种类型的CDN(这种类型费用很便宜)的一个例子就是Cachefly。

  在你自己站点上存储静态内容还有一个更加简便的方法,但是需要使用域别名。你可以在一个指向你自己域诸如.dropthings.com的子域中来存储你的内容。然后你再使用CNAME来将子域映射到一个像cache.somecdn.net这样的CDN服务器上。当浏览器试图解析static.dropthigns.com域名时,DNS会通过CDN命名服务器查找请求。然后命名服务器返回一个离你最近并能提供最快下载性能的CDN节点的IP。然后,浏览器为文件发送请求到CDN节点上。

  当CDN节点看到这些请求时,它会检查这些内容是否已经进行了缓存。如果缓存了,它会直接从本地存储中读取内容。如果没有,会发出一个到服务器的请求,然后查看在响应中产生的缓存头。根据缓存头,系统会决定将响应缓存多长时间。同时,浏览器不会等待CDN节点来获得内容并返回它。CDN在互联网骨干网络上做了一个有趣的技巧是将请求路由到源服务器以便浏览器直接从源服务器获得响应,而CDN却一直在更新缓存。有时候CDN扮演了一个代理的角色,截取每个请求然后使用一个更快的路由和经过优化的链接到源服务器的方式从源服务器上抓取未缓存的内容。这种CDN类型的例子是Edgecast。

0
相关文章