动态CDN加速

  1. 动态 CDN 加速
    1. 内容分类
      1. 静态
      2. 动态
      3. 事件驱动
    2. 几种技术
      1. ESI(Edge Side Includes)
      2. AMP HTML
      3. 动态的好处

动态 CDN 加速

内容分类

  • 静态
  • 动态
  • 事件驱动

静态

动态

这个动态是完全动态,高度定制化,绝对不会重复,比如 ajax。

我们使用到的就是 CDN 的快速传输的能力。也就是 DSA(Dynamic Site Acceleration)。

传统的 DSA 有:

- TCP 优化:设计算法来处理网络拥堵和包丢失,加快这些情况下的数据从cdn的恢复以及一些常见的TCP瓶颈
- Route optimization:就是优化从源到用户端的请求的线路,以及可靠性,就是不断的测量计算得到更快更可靠的路线
- Connection management:就是边缘和源之间,包括CDN之前的线路,采用长连接,而不是每一个请求一个连接
- On-the-fly compression:就是数据在刚刚离开源的时候就进行压缩,可以缩短在整个网络之中的流通时间
- SSL offload:加速或者说减少一些安全监测,减少原服务器执行这种计算密集型的压力
- Pre-fetching:有的服务可以解析HTML文件,并将原始服务器预取缓存对象嵌入到文件中
- [Updated 10/25:
- Whole-site delivery:

事件驱动

很多的 CDN 把它定义为动态的。它实际上是静态的,只是更新时间不可预期,没法提前决定他的生命周期。

所以这部分内容很难被缓存。实际上只要有个好的缓存机制,是可以被缓存的

(我们的菜单页其实是属于事件驱动的)

这个是可以被缓存的,我们需要 CDN 提供即时清除的能力。这种清除能力还得是可编制化的,可以高速,精准的清除。一直以来的两个问题:

    1. 缺少好的失效框架,除了那几个头部之外,没办法让他失效。所以加上事件驱动内容的不可预见性,就直接取消缓存了
  • 2.另一个问题是对于如果做 cdn 缓存事件驱动内容,对于页面的访问情况得不到一个好的反馈,大多数分析和统计都是做在源服务器上的,如果达不到,很多都做不了

几种技术

  • ESI(Edge Side Includes)(通过边缘服务器的组装来将页面划分为不可缓存和缓存的内容)
  • AMP HTML(通过限制页面资源加载加快静态内容的展示)

ESI(Edge Side Includes)

是一个 w3c 的规范(https://www.w3.org/TR/esi-lang),允许边缘服务器通过多个 url 来组装内容。

来把 HTML 切成碎片,每一片可以有自己的独立的缓存策略。CDN 将缓存的静态部分模板和回到起源的非静态内容,在 CDN 的边缘服务器上进行组装,然后全部交付给客户机。ESI 很有效,但是比较难实现,在 HTML 页面也需要不少额外的代码

就是将大家能看到的一样的东西与用户行为相关的分离,提高首屏加载。但是在逻辑层需要去判断是否登录。看上去我们把这个功能用 ajax 来做也行,但是当 js 没法运行的时候,ESI 还是可以这么做。

AMP HTML

AMP 其实就是限制了页面的资源加载,限制了可以使用的元素,将耗时的元素取消,将耗资源的元素通过 custom elements 自己来管理资源加载。避免资源默认被加载,只能使用行内元素

一些 CDN 提供了额外的服务来研究对称的优化。就是在用户侧有一层 CDN,服务器侧也有一层 CDN。

动态的好处

  • 1.首页加载速度更快
  • 2.更安全的连接

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com

文章标题:动态CDN加速

文章字数:960

本文作者:泽鹿

发布时间:2019-08-28, 16:45:23

最后更新:2019-08-28, 20:11:28

原始链接:http://panyifei.github.io/2019/08/28/技术/前端技术/动态CDN加速/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏