為什麼要使用cdn 雅虎軍規有一條規則建議我們是用cdn。隨便在網上搜索,可以找到使用的cdn的好處。 再次強調第一條黃金定律,減少網頁內容的下載時間。提高下載速度還可以通過CDN(內容分髮網絡)來提升。CDN通過部署在不同地區的伺服器來提高客戶的下載速度。如果你的網站上有大量的靜態內容,世界各地的 ...
為什麼要使用cdn
雅虎軍規有一條規則建議我們是用cdn。隨便在網上搜索,可以找到使用的cdn的好處。
再次強調第一條黃金定律,減少網頁內容的下載時間。提高下載速度還可以通過CDN(內容分髮網絡)來提升。CDN通過部署在不同地區的伺服器來提高客戶的下載速度。如果你的網站上有大量的靜態內容,世界各地的用戶都在訪問,我說的是youtube麽?那CDN是必不可少的。事實上大多數互聯網中的巨頭們都有自己的CDN。我們自己的網站可以先通過免費的CDN供應商來分髮網頁資源。
cdn不只是可以讓用戶去請求到離自己最近的伺服器,提高速度,他還有以下幾個好處。
1. 防止本功能變數名稱下的cookie在發送請求時被帶過去。
如果在network下看過頁面的請求,可以發現,即使是請求一張jpg的圖片,也會發送同域下的cookie過去。即便是不到幾k的大小,用戶量大了,也是一個巨大的消耗。不論是出於載入速度還是寬頻的考慮,都應該避免這種情況。這也是靜態cdn的功能變數名稱不與主功能變數名稱一致的原因之一。
2. 防止過多請求被瀏覽器限制。
瀏覽器同功能變數名稱的請求是有最大併發限制的,一般是6個。具體可以參考這篇博客。這是cdn的功能變數名稱不與主功能變數名稱一致的原因之二。
3. 方便緩存復用。
如果是同一個靜態文件,在多個頁面被載入,如果在cdn上,被客戶端緩存下來,那麼再打開另一個頁面,也不需要再去請求,可以直接使用緩存。
說點別的
說到了cdn,就想到了一些平時開發時約定俗成的習慣。
dns預解析
估計大部分同學都會有一個文件存滿了諸如以下的內容:
<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="http://img.jd.com" />
<link rel="dns-prefetch" href="http://static.jd.com" />
公司常常會有很多個靜態資源的功能變數名稱,有的時候,頁面下的靜態資源很可能是從許多個不同的功能變數名稱下載入的。而功能變數名稱解析為主機也需要時間,這時,如果我們使用dns預解析,可以加快資源的請求速度。
這需要瀏覽器的支持,目前主流瀏覽器全部支持。
合理利用緩存
雅虎軍規第一條————減少http請求。
實際開發中,雪碧圖、壓縮捆綁css、js是我們常用的方式。但是在客戶端能力越來越強的如今,其實不一定非要這麼做。
舉個例子,如今客戶端會緩存大部分靜態資源在本地,加上併發請求的原因,多個文件反而能更好的利用客戶端的能力。
我認為,在項目上線時,儘可能找到復用較多的資源,單獨拿出來,項目專享的js和css打包成一個文件,不失為一個更好的選擇。
常用的cdn網站
bootCdn這個網站可以用來檢索常用的前端項目。
七牛也有這種服務。
以上是我個人的一些理解,如有不對,敬請指教。