### CDN的作用:
加速文件网络传输
### CDN大致原理:
优化物理链路层传输过程中的光速有限、丢包等问题来提升网速,其优势是通过各地的服务器部署,
使用户在不同的地方访问可以从就近的CDN服务器上获取资源,速度比不同的地方都从同一个地方获取速度会快很多
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="//cdn.com/index_123456.css">
<title>Document</title>
<script src="//cdn.com/index_123457.js"></script>
</head>
<body>
</body>
</html>
```
### CDN缓存问题
上面代码中引用了CDN的两个资源,文件资源名称后面都添加了hash值,hash值是根据文件内容进行
计算得出来的,所以当文件更新后文件名称也会自动更新,浏览器也会重新去请求文件
但有一个问题:HTML文件会在CDN服务器上缓存较久时间,所以也会造成HTML文件内的资源更新了,但可能发生
文件还是之前文件的问题,所以我们可以把除了HTML文件的静态资源构建到CDN服务器上,避免CDN服务器的过久
缓存
还有一个问题:如果静态资源都部署到了同一台CDN服务器上,由于浏览器对同一域名的同一时刻请求次数的
限制(并行加载),大约是4-6个左右,所以会造成资源阻塞,所以我们可以资源分散部署到不同的CDN服务器上,
这样可以减少因浏览器请求次数的阻塞而造成的延迟,比如CSS部署到CSS.CDN, JS部署到JS.CDN服务器上,
不过这样的话呢也会造成域名解析时间的加长,可以使用域名预解析来减少解析时间
```
<link rel="dns-prefetch" href="//js.cdn.com">
```