國內網非常多的網站都使用免費的 Google CDN 服務來加載某些 js、字體樣式庫以提升網頁瀏覽體驗,例如 jQuery、Google Fonts。但是目前 Google 的大多數網站在大陸無法正常訪問,因此這些本身是加快網頁載入的庫反而成為了阻塞網站加載的原因。這種情況國內的網站并不多,但是國外的網站卻非常多地使用這些庫。一般地,當 Google CDN 庫稱為網頁加載的限制因素時,瀏覽器狀態條會顯示狀態為 “正在等待 ajax.googleapis.com 的響應...” 或 “正在連接...” 等字樣。

如果打開控制臺,能看見 Google CDN 確實正在阻塞網頁加載。如果等待足夠長的時間,瀏覽器最終會放棄加載,并呈現一個殘缺的網頁,這并不好。下面從網頁開發者、瀏覽器用戶的角度給出一些解決方案。
對于網頁開發者:選用其它 CDN 庫
網頁開發者必須考慮到這個問題,因此在設計網站時就應該考慮棄用 Google CDN 庫。如果訪者大多來自國內,可以考慮使用百度 CDN、新浪 CDN 庫,它們都包含了非常常用的 JS 庫文件。如果有面向國際的訪客,則可以考慮使用微軟的 ASP.NET CDN。
例如以下是使用微軟 CDN 加載 jQuery 的一個范例:
JavaScript Code復制內容到剪貼板
- script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js" type="text/javascript">/script>
如果要使用 Google Fonts,則可以使用 360 提供的代理 CDN。這樣一來,即時要使用 Google Fonts 網頁字體,網頁的速度也不會受到干擾和阻塞。
修改 hosts
對于用戶,我們無法直接令瀏覽的網頁棄用其正在使用的 Google CDN,從而出現無法加載的情況,那應該怎么辦呢?解決方案之一就是修改 hosts。通過修改 hosts,強迫 CDN 域名指向指定的 IP,得以成功從 Google 加載這些文件。
值的一提的是,有一部分 Google CDN,例如 fonts.googleapis.com、fonts.gstatic.com,它們可以被解析到首都的 IP 地址,因此如果在 DNS 解析失效的情況下,通過 hosts 將這些域名直接指向首都的 IP 是最好、最快速的。
當然,如果 Google 改變心意,首都的服務器拒絕提供這些域名的緩存服務的話,就沒有辦法了。至于為什么 Google 不索性把所有的 CDN 都解析到首都,也沒人清楚。

修改 hosts 并不一定是好方法,因為速度可能會比較緩慢,另 hosts 可能失效。
使用 Chrome 擴展主動替換為國內 CDN
國內的一些服務器通過鏡像或同步拷貝等一些方法能保留一份與 Google CDN 同樣的文件專供國內用戶加載。我們可以使用一款名叫 Replace Google CDN 的 Chrome 擴展插件,來主動替換瀏覽的網頁里的 Google CDN 為國內的替代服務器。
這款插件作者為 @justjavac,Github 項目地址為 github.com/justjavac/ReplaceGoogleCDN,擴展地址為 https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice。當然你可能需要先使用一些技巧來打開這個應用商店才能安裝。
擴展插件支持替換 Google CDN 為中國科技大學提供的 CDN,支持 ajax/fonts.googleapis.com、themes.googleusercontent.com 的替換,并且支持 HTTPS。在這里要感謝他們。

安裝好這款插件后,瀏覽任何帶有 Google CDN 的網頁時都會被跳轉到這個節點,這樣就不會出現阻塞的情況了。