之前回国发现从国内访问我的网站速度很慢,有时候要超过10秒才能打开,经过排查发现很可能是cloudfront的原因,后来通过设置dns把国内对cloudfront的访问定向回源服务器,而不使用cloudfront。这次回国测试了一下确实是有效果的。
当时也考虑过使用国内的cdn,并且也发现了这个做法因为备案的原因不可行。所以还是购买了一个香港双线CN2的vps,并设置了nginx反向代理,把国内访问静态文件定向到这个服务器,再由这个服务器访问cloudfront。
原有设置,使用cloudfront访问静态文件
这是之前的设置,国内通过cloudfront访问静态文件,虽然cloudfront在香港有服务器,但是因为线路没有优化,所以访问速度很慢,再加上墙对cloudfront的干扰,导致使用cdn反而拖慢了整个网站的访问。
从ip来看确实是香港服务器。然而速度并没有因为地理位置近而更快。
甚至可以发现个别访问会绕道美国再回来。
关闭cdn
发现cloudfront速度慢以及被干扰之后,尝试对国内ip关闭cdn,直接访问源服务器。可是速度还是较慢。
直接访问虽然速度慢,可是却很稳定,不存在被干扰的现象。也不会绕路。在实际使用时,直接访问会比使用cloudfront快,因为没有了干扰。
使用香港服务器
使用香港服务器后速度快了很多,因为选择的是采用了双线CN2的服务器,线路优化很理想,而因为避免了cloudfront的被干扰现象,访问速度很理想。
从跟踪来看,线路的优化还是不错的。
在使用了geolocation的dns以后,就可以区分中国和海外对静态文件的访问,中国访问香港服务器,海外直接访问cloudfront。
模拟访问
之前都是测试的ping值,而从各地模拟访问的结果来看,效果也很明显。
实际效果
测速网站的结果只是用来参考的,最终还是要自己亲自测试。因为测试不同的访问方式只需要切换dns就行,所以趁回国测试了一下。基本上来说直接使用cloudfront基本不可用,而比较国内ip访问美国的源服务器和香港服务器来说,香港服务器确实加快了网站的整体访问速度,但是因为香港服务器普遍带宽很小,所以在大图片的下载上还是比不上在国外访问cloudfront,而是和直接从源服务器下载速度差不多。
cloudfront最大的问题还是被干扰,如果使用自己的域名cname过去,暂时也没观察到被干扰的现象,不过因为线路原因,cloudfront的速度在国内并没有优势。
另外发现google adsense确实可以在国内正常展示,但是mailchimp的cdn貌似被干扰的很严重,基本上要10秒以上才能加载出来,甚至是无法加载。
结论
方案一:如果不想折腾或者对成本比较敏感,用自己的域名cname到cloudfront,然后所有静态文件通过这个域名访问。但是不排除cname也会被干扰。比较好的做法是区分国内外流量,国外流量cname到cloudfront,国内流量cname回源服务器。
方案二:如果愿意多管理一个服务器,也不介意成本的话,选一个比较好的香港双线CN2的vps,然后设置dns,把国内对静态文件的访问定向到这个vps,并做好缓存。这么做对大文件的效果有限,但是对类似css和js之类的小文件加速效果比较好。另外对动态内容也可以使用反代,避免了国内网络到国际网络的瓶颈,当然这样就要再考虑两个vps之间的速度了。
这两个方案成本上相差比较多,但是效果其实区别并不明显,对真实访客来说应该是没有区别的,除非原有的vps速度真的很慢或者被干扰了,所以主要还是看自己喜不喜欢折腾了。不管是什么方法,都推荐网站采用https,避免被封。
Update: 2017/11/08
针对静态文件,区分了图片与其他文件,国外均通过cloudfront访问,国内访问图片会连去美国服务器,其他文件会连去香港服务器。
Update: 2018/02/27
香港的vps选择实在是太少,而且带宽太小,之前用的ufovps,然而在meltdown和spectre漏洞发生以后,却没有打补丁的计划,所以还是抛弃了。最近改为了使用阿里云国际版的新加坡服务器,效果很不错,新加坡的CN2线路,速度很好。
想请问下博主是用什么网站/软件做测试的?
@D: 我是用站长工具网站 http://tool.chinaz.com/