# 一.CDN

前言

CDN 的核心功能:DN 的核心点有两个,一个是缓存,一个是回源

  • 缓存就是说我们把资源 copy 一份到 CDN 服务器上这个过程
  • 回源就是说 CDN 发现自己没有这个资源(一般是缓存的数据过期了),转头向根服务器(或者它的上层服务器)去要这个资源的过程

# 1.CDN 与前端性能优化

CDN 往往被用来存放静态资源

业务服务器,它的核心任务在于生成动态页面或者返回非纯净页面,这两种过程都是需要计算的。

  • 静态资源,就像是 JS、CSS、图片等不需要业务服务器进行计算即得的资源
  • 动态资源,顾名思义是需要后端实时动态生成的资源,较为常见的就是 JSP、ASP 或者依赖服务端渲染得到的 HTML 页面。
  • 非纯净态资源,它是指需要服务器在页面之外做额外计算的 HTML 页面。具体来说,当我打开某一网站之前,该网站需要通过权限认证等一系列手段确认我的身份、进而决定是否要把 HTML 页面呈现给我。这种情况下 HTML 确实是静态的,但它和业务服务器的操作耦合,我们把它丢到 CDN 上显然是不合适的。

# 2.CDN 的实际应用

静态资源本身具有访问频率高、承接流量大的特点,因此静态资源加载速度始终是前端性能的一个非常关键的指标。CDN 是静态资源提速的重要手段,在许多一线的互联网公司,静态资源走 CDN 并不是一个建议,而是一个规定。

# 3.CDN 优化细节

同一个域名下的请求会不分青红皂白的携带 Cookie,而静态资源往往不需要 Cookie 携带什么认证信息。把静态资源和主页面置于不同的域名下,完美地避免了不必要的 Cookie 的出现。

看起来一个不起眼的小细节,但带来的效果却是惊人的。以电商网站静态资源的流量之大,如果没把这么多多余的 Cookie 拿下来,不仅用户体验大打折扣,每年因性能浪费带来的经济开销也将是一个非常恐怖的数字。