-------------- 静态资源部署cdn分发网络的引入 ----------------
- CDN的全称是Content Delivery Network(内容分发网络)。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率,CDN的关键技术主要有内容存储和分发技术。
- 在获取前端页面时,我们知道是先加载静态资源,后面通过ajax请求来获取商品详情页信息来进行渲染页面的过程,任何一步没做到位都会拖累整站的QPS,TPS的响应,未将静态资源加载到cdn的情形下,TPS700左右,且平均响应时间也在300多,cdn作为前端静态资源请求的中间层节点,它充当者用户客户端访问的服务端,同时也是后端服务端的客户端,它需要定义合理的缓存策略和刷新方式来加速用户对静态资源的访问。

- 2.具体做法:
- 将用户的静态请求打在nginx时,将获取静态资源的地址进行重定向,将静态资源重定向到阿里云的CDN内容分发网络(无限大的内容磁盘缓存),阿里提供的CDN加速服务会根据用户所在位置选择并返回最优节点IP,如果CDN中不存在访问的静态资源,则cdn会进行回源来获取静态资源,一边将资源返回给用户请求一边进行缓存,以便下次访问可以加速返回资源,这样的作法能够加速静态资源的访问:
- DNS域名解析通过cname来进行地址解析,将其解析到源站,可以动态地更换域名,CNAME其实是DNS的别名记录,别名指向。可以为一个主机设置别名:
- 3. CNAME 即指别名记录,也被称为规范名字。这种记录允你将多个名字映射到同一台计算机。 当需要将域名指向另一个域名,再由另一个域名提供 ip地址,就需要添加 CNAME 记录。 为什么使用CDN需要 CNAME 记录?
- 在阿里云开发者平台创建加速域名后,会给域名分配一个 “CNAME域名”(例:example.qiniudns.com)。用户需要在域名服务商处,配置一条 CNAME 记录,将访问加速域名的请求指向这个 example.qiniudns.com 域名记录,生效后访问加速域名时解析将会正式指向阿里云 CDN ,之后由CDN完成调度,使得该域名所有的请求都开始享有CDN加速效果。
- 4.CNAME记录和A记录是什么关系?
- CNAME记录和A记录都是在DNS解析过程中的一种记录值类型。A记录会直接解析到某个IP,CNAME会解析到另一个域名,之后再对另一个域名继续解析,直到解析出节点。所以,A记录只能够实现域名解析到IP,阿里提供的CDN加速服务会根据用户所在位置选择并返回最优节点IP。
- 用户客户端请求返回资源的方式,通常是判断缓存有无失效,若无失效则直接使用,若失效的话服务端就会对请求的http所带的请求头参数进行验证,判断ETag或者是Last-modified是否与服务端的一致或者是否有修改,若有修改则返回304则无修改,直接返回本地缓存的静态资源,若有修改则返回200以从服务器中返回数据。


- 6.静态资源部署策略:
- 我们的静态资源是直接通过cdn节点来进行一次回源进行访问的,其访问后的数据会按照定义的过期时间在cdn上的缓存中,若这时后台进行了静态资源的文件更新,则会使得其在过期时间前都访问不到新数据,需通过强制刷新或者重启的方式,这样对用户并不友好,因此,我们需要定义好资源部署策略:html的文件部署和js等文件的部署均带上版本号,且新老版本并存且可以进行回滚,先部署资源文件再部署html
- 7.全页面的静态化:
- 全页面静态化:将服务端的静态资源文件加载到cdn上,并将动态请求在服务端通过html、csss、js渲染等方式获取的纯html文件直接以静态资源的方式来部署到cdn网络上获得加速,并减少redis的流量压力;利用爬虫技术phantomjs将页面爬下来并进行保存:

相关文章: