外贸B2C系列:海外VPS如何进行性能优化

来源:互联网 发布:淘宝一点通 编辑:程序博客网 时间:2024/04/27 15:51

转自:http://www.dewen.org/q/2070

对于一个海外VPS(比如在日本linode的10GT),由于网路会比较长,用户感受到的页面打开时间里,通常round-trip占比是最大的。所以如何优化round-trip就是一个重点。

基本上有下面几个方面,主要是根据http协议的一些内容进行优化:

1.keep alive

目前主流和浏览器和服务器都支持keep alive功能。简单来说keep alive就是浏览器与服务器的保持连接,多次请求不需要重新建立连接三次握手。在网络延迟占大头的情况下,这是绝对必要的。

2.gzip

这不用多说了,gzip对请求返回进行压缩,以前两个包的变成一个包,这就减少了一次round-trip。由于服务器是根据浏览器发送的http头来判断是否启用gzip的,所以gzip是否有用还得看浏览器支持。但是目前也有一些浏览器,支持gzip但不发这个头。这时候你可以参考一下下面PPT的“强制gzip压缩”一节

http://velocity.oreilly.com.cn/2011/ppts/nginx_at_taobao.pdf

3.减少串行请求

10GT最初为了并行请求,将页面所有动态模块都并行的异步加载。但是这样出现一个问题,由于所有并行任务是在主页面框架加载后才能开始,所以对于首页的话题列表,他需要串行的两个请求才能获取到。网络延迟高的时候,会明显的感觉到列表加载有延迟。所以现在你可以看到列表和主框架是一起加载的。只需要一个请求。

另外如果你并发的请求本身就比较大,比如页面多张不同url的图片,那么你可能还需要为图片设置多个域名,以免达到浏览器对同一域名访问的最大并发值。从而导致请求需要排队串行化。

4.浏览器缓存

10GT右侧的热标签和新鲜事也是异步加载的,不过你可能发现很少会感觉到这两个模块加载的延迟。原因就是这两块的请求返回了缓存一定时间的http头部,他们几乎都是从浏览器缓存中取的。

另外还有评论列表也用到了浏览器缓存,在请求评论时,GET请求会带着最后回复的时间戳,返回的http头里会带有缓存头部。这样只要没有新的回复,回复部分也是直接从浏览器缓存中取得的。有新的回复后,GET请求中的时间戳会改变,从而获取到最新的列表进行缓存。

5.使用etag

etag是http协议中的一个头部,它用于标识一个请求返回的资源。在获取资源时,可以返回etag用于标识当前请求的数据,再次请求同一个url时,服务器通过浏览器发送的etag来判断此资源是否有修改,如果没有,就直接返回304,浏览器会使用本地缓存,这样只需要一个包就能搞定。所以在10GT的所有GET请求里,除了直接指定缓存时间外的,都包含并识别了etag,通过这种方式来直接返回304,从而减少数据包大小和网络开销。当然,使用Last-Modified也可以。

6.使用cookie free的域名来加载静态资源

http请求都会带着cookie,如果cookie过多,可能会导致一个请求需要多个包来发送。所以如果不需要cookie的东西,比如css,js和图片等,可以考虑放到另一个域名下,这样请求包会比较小,同理,速度也就会快一些了。这一点10GT还没有做,主要是因为目前页面资源需求不多(css需要的资源只有一个背景图),且都做了前端缓存。

 

原创粉丝点击