当你的网站或者APP访问量日渐增多,用户体验却持续下降,服务器性能严重不足的时候,选择接入CDN是大多数情况要必须做的,当你在众多CDN厂商中好不容易选择了一家(不知怎么选择,可以闭眼选择腾讯云CDN🙂),进行配置的时候,不要简单的认为按照入门文档配置完就觉得万事大吉了。很多案例证明,接入CDN只是一小步,后面出现的各种问题,会让你抓狂。下面我们就来讲讲如何用好CDN,让它发挥出最佳效能。以下涉及到的CDN事项,将以腾讯云CDN作为案例,仅供参考。
如果网站资源没有之前没有针对文件属性进行过划分,建议进行一下初步的分析,确定资源属性归类,比如静态小文件(css、js、jpg等)、视频文件(mp4、avi等)、程序安装包(apk等)、动态资源(api、php等)等,采用不同的域名承载。这里不要嫌麻烦,所有资源使用一个域名承载,风险较大,也不利于性能优化及项目管理。域名拆分之后,接入CDN之前,你或许还需要准备证书,如果条件允许,准备一个泛域名证书会方便很多。证书的申请和购买可以参考:https://cloud.tencent.com/document/product/400/7995
有些访问资源,可能需要一些额外的配置,比如防盗链、特殊Header配置、远程鉴权、302跳转等特性,在配置CDN之前,梳理清楚,按照前述域名规划,一一对应好,记录下来。这些功能需要你进行前置到CDN来完成,遗漏这些,将会带来一些不必要的麻烦。
源站是CDN在缓存失效或者没有文件时获取资源的地方,方便期间,可以把当前的web服务器作为CDN的源站,注意要根据业务的增长规模,适当进行扩容。此外,源站的出口要具备多ISP出口,降低潜在的CDN回源性能不佳问题,另外,建议设置主源和备源,一方面是数据备份及容灾需求,另一方面,降低因为回主源失效导致的CDN访问失败。
如果网站需要存储的文件非常多,自己搭建文件服务器成本较大,可以采用云存储作为源站。对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。腾讯云 COS 使所有用户都能使用具备高扩展性、低成本、可靠和安全的数据存储服务。CDN+COS是一种文件存储和分发的高优方案。
具体到配置,对于新手完全可以参考指引文档,比如腾讯云CDN《从零开始配置CDN》。在此我们不再累述,本小节我们重点介绍几个最佳实践的参数配置。
首先在接入域名配置的首选中,要注意的是,需要根据功能梳理的域名情况,选择正确的业务类型. 这关系到你的域名会被分配到合适的加速平台,一般来说CDN厂商针对小文件、下载、流媒体点播会有不同的平台和优化参数。如果选择错了,虽然不会导致业务访问失败,但却会对访问质量有一定的影响。
如果是静态小文件(css、js、jpg等),请选择静态加速;大文件,下载分发类域名,选择下载加速;视频相关选择流媒体点播加速。 到这里,你就会明白,为啥Step1会建议进行资源划分了。
继续配置,就会涉及到缓存配置,这里虽然是选填,后期也可以在域名管理中进行修改,建议提前规划好。
如果是大文件和点播类型,建议打开分片回源,静态小文件就没有必要,分片回源可大大提高大文件的命中率和分发效果。另外,如果业务URL中携带的querystring等参数,跟文件内容无关而且参数经常变化,即参数变化,并不代表文件有变化,强烈建议开启过滤参数,这会大大提高缓存命中率,提高访问质量。至于,缓存时间,这里按照业务需求即可,文件更新不是同名情况,可以设置久一些。另外,需要注意,需要缓存的文件,源站返回的cache-control header一定不要是no-cache 、 no-store 或 private,此时平台策略都是不缓存的。可以参考:https://cloud.tencent.com/document/product/228/41534
另外,通过域名管理界面,在回源配置项目中,还可以设置:
•回源跟随-开启后,针对源站返回的301、302进行Follow获取资源缓存。
•回源超时—可以调整回源连接和读取的超时时间,针对某些情况源站响应慢的场景,调大后,可大大缓解回源失败。
接下来第三个建议使用的选项是配置热备源站。注意下面说到的所有优化选项,都需要在添加完域名后,进入域名管理页进行操作。
备源存在的重要意义,是当CDN需要回源,连接主站失败或者主站故障时,虽然连接主站会有多次重试,但是备源会在主源失效时立刻被启用,不会造成这一次请求失败,对用户无感。
第四,当前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服务。可以参考CNAME配置《指引》。 这里给大家的建议是,如果条件允许,且是线上业务流量正在跑,不要ALL IN切换,采取分地区灰度的策略。先切一两个地区到CDN上,看看服务有没有问题或者用户反馈后再全量。这里难点是域名的权威解析服务器具备分线路解析功能。具备多线路解析功能的好处还有,你可以同时使用多家CDN厂商来服务,按地区分配流量,某一家故障时,可切到其他CDN进行快速恢复。 如果想体验多线路解析功能,推荐DNSPOD解析服务:https://cloud.tencent.com/product/cns
当服务在CDN上面运行起来后,不要走开,你要关注流量、带宽以及命中率情况,以便进行及时的调整,提出建议或者改进给CDN厂商,获取最佳收益。通过控制台的统计分析功能,你可以实时获取各项指标。以及根据这些数据配置一些必要的监控。比如关注TOP用户访问地区,针对这些地区的访问进行质量探测对比,看看是不是本地覆盖等等。数据分析利用是一个长期的事情。
以上是针对接入CDN的一些实践优化策略,希望能在各位读者的生产实践中有所帮助。另外,如果大家在使用腾讯云CDN方面还有一些深度的用法或者建议,欢迎联系我们。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。