注:以上内容部分摘自百度智能云CDN产品介绍,详见:百度智能云CDN
二、项目背景
该项目来自百度汽车信息与服务平台:优家。目标是优化H5产品在优家产品全矩阵的加载速度,给用户更好的浏览体验。
优家H5服务优家M站、优家运营活动、优家APP和优家小程序H5产品,应用广泛。优家自成立以来,一直处于业务快速发展阶段。短时间内完成了小程序、APP、M站、PC站全矩阵产品的研发和上线。初期,为了业务逻辑复用、敏捷开发、快速上线,后端代码和前端没有很好的与业务分离,接口逻辑、模板逻辑、静态文件部署在同一台机器。20 年中,随着业务越来越复杂,我们逐渐优化升级后端架构,并运用了 BFF、微服务、和 DDD 来执行后端单体应用程序的更合理的分层。目前我们将整个架构拆解为接入层、BFF层、微服务层和基础设施层。在完成业务抽象的同时,也很好的完成了前后端隔离。
将整个架构合理划分后,可以更好地划分性能。FE同学负责显示层面的性能优化,RD同学负责界面性能优化。原本分工明确,效果显着。但是在整理静态文件优化方案的时候,发现分工不是很明确,也不知道应该由谁来负责。作为项目负责人,利用业余时间在FE的配合下完成了静态文件的CDN加速。好处是显而易见的。我在这个过程中遇到了一些问题。希望记录下来,分享给有需要的同学,帮助大家成为全栈。工程师的路越来越好。
3、问题分析
驾驶业务严重依赖H5能力,H5的极速体验逐渐成为影响用户体验的核心问题。静态文件主要包括css、js、字体等,每次页面加载都会请求大量的静态文件,所以在我们使用一些技术手段优化渲染能力之后,静态文件的加载就成为了一个可能的优化点我们 。静态文件的 CDN 加速是业界比较简单和广泛的优化方法。因此,希望对静态文件进行CDN加速,利用CDN能力提高静态文件的访问速度cdn加速是什么意思,对CDN中的数据进行gzip压缩,进一步提高加载速度。.
CDN加速方式
笔者作为后端同学了解到,静态文件CDN加速有两种方式:
CDN回源加速:静态文件和接口文件都可以缓存。用户静态文件的域名可以更改为CDN域名。请求静态文件时,会请求CDN节点;CDN节点会检查自己的节点是否有内容的缓存(可以是uri粒度)。,也可以是url粒度,理论上接口数据也可以缓存);如果CDN节点有内容的缓存并且没有过期,直接返回给用户,结束;如果CDN节点没有缓存内容或者缓存已经过期,则返回请求的源站地址拉取内容,如果返回的http状态码符合协议(只能缓存200,或者301、302也可以指定),CDN会缓存内容,否则不会被缓存;不管回源不管请求的结果如何,回源结果都会返回给用户,结束(这里的区别只是回源后缓存数据的时候)。对象存储服务部署加速:只能缓存静态文件,不能缓存接口数据。静态文件不仅需要部署到模板服务器,还需要在代码启动过程中通过脚本部署到远程对象存储服务;静态文件直接使用存储服务器提供的对象CDN域名访问(CDN到对象存储服务器也应该属于回源加速)。CDN适用场景 结束(这里的区别只是回源后缓存数据时)。对象存储服务部署加速:只能缓存静态文件,不能缓存接口数据。静态文件不仅需要部署到模板服务器,还需要在代码启动过程中通过脚本部署到远程对象存储服务;静态文件直接使用存储服务器提供的对象CDN域名访问(CDN到对象存储服务器也应该属于回源加速)。CDN适用场景 结束(这里的区别只是回源后缓存数据时)。对象存储服务部署加速:只能缓存静态文件,不能缓存接口数据。静态文件不仅需要部署到模板服务器,还需要在代码启动过程中通过脚本部署到远程对象存储服务;静态文件直接使用存储服务器提供的对象CDN域名访问(CDN到对象存储服务器也应该属于回源加速)。CDN适用场景 还可以在代码启动过程中通过脚本来远程对象存储服务;静态文件直接使用存储服务器提供的对象CDN域名访问(CDN到对象存储服务器也应该属于回源加速)。CDN适用场景 还可以在代码启动过程中通过脚本来远程对象存储服务;静态文件直接使用存储服务器提供的对象CDN域名访问(CDN到对象存储服务器也应该属于回源加速)。CDN适用场景
个人认为这两种方式的适用场景如下:
CDN回源加速:适用于部署时可以单独部署的场景,先有静态文件,后有模板文件,否则会有在线流量损失;对象存储服务部署加速:理论上适用于所有场景,但需要额外开发和上传,并保证脚本的可靠性和文件的存在。四、操作步骤
这次你驱动静态文件加速项目,选择成本更低的CDN回源加速方案。具体操作步骤如下:
1)自行申请加速的CDN域名;
2)将申请的域名与百度公有云提供的CNAME域名绑定,请参考百度智能云CDN接入指南;
3)将申请域名的回源地址配置为对应的回源域名,使得静态文件在访问时可以自动回源并缓存;
4)FE需要将模板中所有的静态文件域名替换为新申请的域名;
5)设置CDN缓存时间,可以根据自己的需要设置。可以参考百度智能云CDN接入指南中关于缓存设置的介绍;
6)需要设置CDN域名跨域白名单,允许跨域域名。比如你有车,我们需要访问域和域中的CDN域名,你需要设置., ., ., . 可跨域访问的域名;
7)对于CDN流量,需要加一个标签来辅助接入层完成流量识别功能,但是对于CDN流量则不需要(主要是为了简单起见,整个站点的301跳转最初是在接入层适配PC,在接入M站和M站接入PC的情况下,这个能力会更加细化,在路由层实现。这个标签可以用,但是可以作为一个特殊情况下的解决方案);
8)全站功能回归验证。
五、详细操作
以下是百度智能云CDN操作过程中的一些关键步骤,供大家参考(PS:CDN配置,不懂的一定要搞清楚再配置一遍,否则就使用默认配置。本文未提及的部分最好不要修改,如如有需要,请详细阅读相关配置文件或咨询客服,确认后再修改)
5.1。域名申请
自行申请域名
5.2. CNAME域名绑定
参考百度智能云CDN接入域名
5.3. CDN域名配置5.3.1. 配置回源地址
5.3.2、设置缓存
设置缓存的有效时间。