【分享业务场景】日百万PV级页面秒开心得
业务应用:ECS
业务场景:单一页面的高并发高速访问请求
使用服务器配置:ECS1核2G4M
遇到的问题:有限预算内处理高并发低流量请求所遇到的矛盾。
解决方案:ECS+CDN+阿里云解析+Incapsula
客户某业务提供对不良网站的过滤,即当用户访问到非法网站时立刻返回警告页面。一个看似简单的警告页面,由于用户遍布国内外,要实现国内外跨地区、跨运营商的秒开显示着实令我们费了一番功夫。
因为需要调用后台数据,此页面用PHP语言编写,因此无法直接将其存放到静态CDN中直接访问。初期,我们采用1台ECS服务器专门用于展示警告页面,但很快发现,随着业务量的快速上升,对ECS服务器的带宽消耗愈发严重,一味的升级带宽或上SLB超出了现有预算,遂将该页面的图片文件和js文件迁移至又拍第三方公众CDN服务,这样一来,大幅降低了对ECS服务器的带宽占用,在有限的预算内解决了大文件的流量消耗。
与此同时,该页面的PV量已攀升至百万级别且海外用户也日益增多,我们测试发现海外用户在访问此页面时存在较为严重的延迟现象,因警告页面的特殊性,如果不能瞬间显示则失去了意义。随后在原ECS存放PHP页面+国内三方CDN存放静态文件的基础上,通过阿里云解析的智能解析功能将海外访问请求CNAME至Incapsula的节点,借助Incapsula全球CDN节点实现海外的快速访问。
但好景不长,我们紧接着发现尽管该页面访问迅速但完全加载完毕却耗时较长,特别是海外用户访问更是如此,通过pingdom发现,原来起初为了减轻CDN流量压力,我们将该页面的图片\js等静态文件分别存放于多个第三方CDN中,导致用户访问时,需要多次解析这些CDN的域名,大量的时间被浪费在这里。遂立即把图片和js等从第三方静态CDN服务中撤下迁回至ECS,而后使用反代式WAF/CDN服务对该页面做全局CDN加速强制缓存静态文件,使原本需要5-6次DNS解析的过程缩短至只需解析一次即可全部加载完毕,现在尽管每天高达百万次的PV访问,但该页面依旧加载十分迅速,且面对高访问量也无需频繁升级带宽。
通过这次反复折腾,得到的心得:
1.尽量避免多个CDN混用。
2.不要忽视CDN域名的解析延迟,CDN域名的解析延迟往往有可能抵消掉其所带来的加速效果。
3.如果图片文件不多、不大就尽量杜绝把这些小文件单独放在第三方CDN上,可以直接放在服务器中,使用反代式CDN做全局加速。
4.充分利用阿里云解析等智能DNS解析服务结合cloudflare、Incapsula做海外加速。
暂时就说这么多吧。
各位可以通过http://tools.pingdom.com/fpt/测试一下你们的网站页面访问速度得分,并找出是哪里拖慢了页面的加载速度。
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。