如何用好CDN,让它发挥出最佳效能
当你的网站、APP访问量日渐增多,服务器性能不足的时候,选择接入CDN是大多数情况必须做的。下面我们就来讲讲如何用好CDN,让它发挥出最佳效能。
资源划分
如果网站资源之前没有针对文件属性进行过划分,建议进行一下初步的分析,确定资源属性归类,比如静态小文件(css、js、jpg等)、视频文件(mp4、avi等)、程序安装包(apk等)、动态资源(api、php等)等,采用不同的域名承载。这里不要嫌麻烦,所有资源使用一个域名承载,风险较大,也不利于性能优化及项目管理。域名拆分之后,接入CDN之前,你或许还需要准备证书,如果条件允许,准备一个泛域名证书会方便很多。
功能梳理
有些访问资源,可能需要一些额外的配置,比如防盗链、特殊Header配置、远程鉴权、302跳转等特性,在配置CDN之前,梳理清楚,按照前述域名规划,一一对应好,记录下来。这些功能需要你进行前置到CDN来完成,遗漏这些,将会带来一些不必要的麻烦。
源站准备
源站是CDN在缓存失效或者没有文件时获取资源的地方,可以把当前的web服务器作为CDN的源站,注意要根据业务的增长规模,适当进行扩容。此外,源站的出口要具备多ISP出口,降低潜在的CDN回源性能不佳问题,另外,建议设置主源和备源,一方面是数据备份及容灾需求,另一方面,降低因为回主源失效导致的CDN访问失败。
如果网站需要存储的文件非常多,自己搭建文件服务器成本较大,可以采用云存储COS作为源站。
配置实践
选择正确的业务类型
在接入域名配置的首选中,要注意的是,需要根据功能梳理的域名情况,选择正确的业务类型. 这关系到你的域名会被分配到合适的加速平台,一般来说CDN厂商针对小文件、下载、流媒体点播会有不同的平台和优化参数。如果选择错了,虽然不会导致业务访问失败,但却会对访问质量有一定的影响。
如果是静态小文件(css、js、jpg等),请选择静态加速;大文件,下载分发类域名,选择下载加速;视频相关选择流媒体点播加速。
继续配置,就会涉及到缓存配置,这里虽然是选填,后期也可以在域名管理中进行修改,建议提前规划好。
缓存配置
如果是大文件和点播类型,建议打开分片回源,静态小文件就没有必要,分片回源可大大提高大文件的命中率和分发效果。另外,如果业务URL中携带的querystring等参数,跟文件内容无关而且参数经常变化,即参数变化,并不代表文件有变化,强烈建议开启过滤参数,这会大大提高缓存命中率,提高访问质量。至于,缓存时间,这里按照业务需求即可,文件更新不是同名情况,可以设置久一些。另外,需要注意,需要缓存的文件,源站返回的cache-control header一定不要是no-cache 、 no-store 或 private,此时平台策略都是不缓存的。
另外,通过域名管理界面,在回源配置项目中,还可以设置:
•回源跟随-开启后,针对源站返回的301、302进行Follow获取资源缓存。
•回源超时—可以调整回源连接和读取的超时时间,针对某些情况源站响应慢的场景,调大后,可大大缓解回源失败。
配置热备源站
备源存在的重要意义,是当CDN需要回源,连接主站失败或者主站故障时,虽然连接主站会有多次重试,但是备源会在主源失效时立刻被启用,不会造成这一次请求失败,对用户无感。
配置HTTPS
当前HTTPS是必不可少的功能,建议在配置好域名后,把HTTP2以及OCSP开个打开:
•HTTP2.0—开启后,支持http2,建议WEB页面开启,优化页面速度。当前主流浏览器都已经支持,也是一种主流趋势。
•OCSP装订—OCSP(Online Certificate Status Protocol,在线证书状态协议)是用来检验证书合法性的在线查询服务,一般由证书所属 CA 提供。某些客户端会在 TLS 握手阶段进一步协商时,实时查询 OCSP 接口,并在获得结果前阻塞后续流程。OCSP 查询本质是一次完整的 HTTP 请求 - 响应,这中间 DNS 查询、建立 TCP、服务端处理等环节都可能耗费很长时间,导致最终建立 TLS 连接时间变得更长。建议开启,开启后,极大优化TLS握手时间。另外,针对一些签发的比较低端或者免费的证书(比如:Let's Encrypt),当证书分配的ocsp地址是海外,没有在大陆加速的情况,可以大大缓解apple系统访问失败的情况——证书ocsp地址查看:openssl x509 -noout -ocsp_uri -in xx.pem 或者浏览器里面打开:
如果这个ocsp域名解析都在海外,那随时可能会被墙,导致ios打不开资源,因为IOS系统的证书校验策略依赖这个方式。其他系统很少遇到,他们有使用另外的证书检查机制。
配置智能压缩
这个静态资源,一定要打开,减少流量,加快传输速度。压缩的好处不再多说。
切换解析
以上工作做完,域名各项配置完成后,CDN会分配一个CNAME地址给你,需要你将加速域名DNS解析指向这个CNAME地址,你才能真正的使用CDN服务。
数据分析
当服务在CDN上面运行起来后,不要走开,你要关注流量、带宽以及命中率情况,以便进行及时的调整,提出建议或者改进给CDN厂商,获取最佳收益。通过控制台的统计分析功能,你可以实时获取各项指标。以及根据这些数据配置一些必要的监控。比如关注TOP用户访问地区,针对这些地区的访问进行质量探测对比,看看是不是本地覆盖等等。