### 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">
```