使用 CDN 加速你的 GitHub Pages 網站

前言

除去 WordPress, 許多博客網站是託管於 GitHub Pages 上的,但其在國內的速度實在是難以稱道。 因此使用國內服務商的 CDN 對其進行加速不失爲一個好辦法。html

內容分發網絡(Content Delivery Network,CDN)經過將站點內容發佈至遍及全國的海量加速節點,使其用戶可就近獲取所需內容,避免網絡擁堵、地域、運營商等因素帶來的訪問延遲問題,有效提高下載速度、下降響應時間,提供流暢的用戶體驗。git

曾經我使用的策略是在國內託管 Coding Pages,以及爲了讓百度能抓取到博客內容,還作了一番配置。github

讓百度收錄你的 GitHub Pages 博客瀏覽器

可是 Coding 的服務並不穩定,且常常變更一些策略。 如今更是下線整合到靜態部署中,且彷佛由於 API 的問題實名認證老是不能經過,暫時都沒法使用。緩存

因此便乾脆使用 CDN 來進行加速。而且也能夠輕鬆被百度抓取了。markdown

由於我域名購置於騰訊雲,且騰訊雲 CDN 每個月贈送免費 10G 流量。 因此我直接採用騰訊雲的 CDN 來實現。網絡

注意:域名須要備案(按需簽發 SSL 證書)dom

步驟

首先開通騰訊雲 - 內容分發網絡oop

添加本身的域名

add-domain-for-cdn

設置源站

管理 > 基本配置測試

config-source-site

這裏是 GitHub Pages 提供的 IP 地址,能夠添加多行。

About custom domains and GitHub Pages


可選:建議前往 高級配置 開啓 HTTPS 配置

回源協議

證書管理 > 編輯 > 協議跟隨 (若是沒開啓 HTTPS,默認的 HTTP 也能夠。)

set-back-source-protocol

設置 CNAME

前往 域名解析

根據須要將 CDN 提供的 CNAME 線路類型設置爲 境內境外 則仍默認解析回 GitHub Pages。

set-different-cname-for-domain

配置緩存

默認的緩存時間很是長,不配置的話就會致使 CDN 的文件長時間沒有更新。

能夠參見騰訊雲文檔 緩存配置問題

也能夠在 刷新預熱 處手動刷新。

後話

測試發現首頁基本能夠秒開,速度確實不錯。 至於流量萬一不夠用怎麼辦,emm,大概等這裏真有這麼大訪問量的時候,就不至於還要在這樣各處薅羊毛了吧。

FAQ

CNAME 與 MX 記錄衝突致使郵件丟失

值得注意的是,設置 CDN 的方式是使用 CNAME 重定向到 CDN 域名。 若是你同時將裸域名(yunyoujun.cn)做爲博客域名和域名郵箱(好比個人郵箱:me@yunyoujun.cn),那麼你可能會遇到 CNAME 與 MX 記錄衝突問題。

若是你的運營商沒有這麼提示你,那也最好不要這麼作,由於這會致使域名郵箱發生郵件丟失。

在過去解析還沒有規範時,部分運營商是容許同時在裸域名上設置 CNAME 和 MX 記錄的。 但現在按照 RFC 標準協議,CNAME 優先級最高,因此在解析請求過程當中,會優先返回 CNAME 解析記錄結果。 這樣設置的結果就是致使沒法解析到用戶設置的 MX 記錄(設置權重也沒有用),影響郵箱的正常收發。

如今,大部分運營商會提示 CNAME 與 MX 記錄發生衝突,來避免這種狀況。

更多信息請參閱 RFC1034RFC2181記錄衝突的規則

我此前之因此使用 GitHub Pages 託管,卻仍然可以使用域名郵箱,是由於我使用了 GitHub 提供的 A 記錄解析。

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
複製代碼

Managing a custom domain for your GitHub Pages site

而現在加了 CDN 又回到了這一兩難的局面。

最後想着長痛不如短痛,下定決定將博客主域名更換爲 www.yunyoujun.cn

裸域名仍舊使用 A 記錄和 MX 記錄。 設置 A 記錄的做用是用戶訪問 yunyoujun.cn 時(GitHub Pages 的 CNAME 文件提早設置爲 www.yunyoujun.cn),那麼 GitHub Pages 會自動從 yunyoujun.cn 跳轉爲 www.yunyoujun.cn

此外,谷歌瀏覽器會自動隱藏 www 域名前綴,因此必定程度上減小觀感的影響。

以及我發現一些企業的網站都採起的裸域名跳轉 www 域名的方式。

譬如:

  • 語雀:<yuque.com>,
  • JetBrains(著名的 IDE 軟件開發商):<jetbrains.com>(我在幾年前的視頻裏發現他們留的仍是裸域名的網址,而如今則是跳轉 www 連接。)

固然若是你對域名郵箱沒有需求,且域名很是短又很酷,使用裸域名也並不是不可。


此外還有一種解決方案就是 CNAME Flattening

有些服務商(如 CloudflareCloudXNS)能夠直接將 CNAME 解析爲對應的 A 記錄(IP 地址),這時在裸域名上設置 CNAME 就至關於設置 A 記錄。

以往騰訊雲容許 CNAME 與 MX 並存,再而後提示衝突不容許,到了如今又能夠同時設置了。但最好是一次性能夠解析到 A 記錄的 CNAME。

我嘗試在 www 域名上加了 CNAME 開啓了 CDN,裸域名 CNAME 到 www,就會影響郵箱。 這時的路徑就至關於:@ -> www(CNAME) -> cdn(CNAME) -> A。可能沒法使用 CNAME Flattening 。

而直接 CNAME 到 GitHub Pages 時,郵箱網址均可以正常工做。@ -> GitHub Pages(CNAME) -> A

PS. 怎麼感受本身最近說話都有點翻譯腔了。


本文做者:雲遊君

本文連接:www.yunyoujun.cn/note/use-cd…

版權聲明:本博客全部文章除特別聲明外,均採用 BY-NC-SA 許可協議。轉載註明出處便可!

相關文章
相關標籤/搜索