网站服务器的负载问题一直是个很重要也很让人头疼的问题,也是网站从一开始搭建就应该考虑的问题。对于一个负载较大的网站,各个服务器各司其职、负载均衡是必需的。

一般来说,一个比较大型的系统要包括:前端的负载均衡服务器、应用服务器、静态服务器、数据库服务器和缓存服务器。其中,静态服务器是可以单独分离出的一部分,而其他的则最好是集群部署。

龟迹网(guiji.us)使用了又拍云CDN作为静态服务器,主要原因如下。

对于一个页面访问,又拍云承担了绝大部分的请求,如下截图: enter image description here

(可以看到大部分的请求都发到了 static.guiji.us,其绑定的是又拍云CDN。)

又拍云将个人或小型企业搭建CDN的成本降到最低,是按使用收费(Pay-As-You-Go),其价格在www.upyun.com官网上可以看到。

作为又拍云的用户,可能很多人都和我关心一样的问题。主要包括如下几个方面。

  1. 如何上传文件到服务器? 又拍云提供的是FTP接口和API接口两种形式,用户可直接使用FTP客户端工具上传,也可以使用API调用的形式。

  2. 如何绑定到自己的域名? 申请到又拍云后会得到一个类似xxxx.b0.upaiyun.com的域名,然后在又拍云的管理页面添加绑定申请,比如到static.guiji.us。 需注意的是,在Name Server上绑定的记录对应地址为xxxx.b0.aicdn.com,和上述地址有所不同。

  3. 又拍云服务器速度如何? 又拍云服务器使用的是CDN,会根据你发送请求所在网络,结合智能DNS,将请求的域名(static.guiji.us)解析到不同IP上,来确保访问线路速度最快。 一般来说在国内,ping的响应时间在 5ms - 50ms 之间。最慢的时候是用校园Wifi,信号比较弱,大概会接近100ms。
    enter image description here

  4. 静态资源的缓存问题
    Web前端开发者对这个问题可以说是相当头疼。一旦修改了一些静态资源(CSS、JS),就一定要修改对应的URL,否则浏览器缓存会导致用户访问到的数据是老版本。
    又拍云返回的静态资源响应头中Cache时间为一周。同时,又拍云CDN将缓存做得更进了一步。为了保证用户请求快速得到响应,又拍云可能会无视掉URL参数。
    也就是说,请求 a.jpg?v1 和 a.jpg?v2 是没区别的。更新资源的同时,要在又拍云后台刷新缓存中刷掉这个文件。
    还有一种解决方法,也是龟迹网采用的方法。就是,每一次发布网站,都在对应的文件夹名中加一个版本号。这样确保请求的URL是完全不同的,而非仅参数不同,从而避免了客户端缓存和服务器缓存。