使用Google CDN導(dǎo)致網(wǎng)站頁面無法加載的問題解決

國內(nèi)網(wǎng)非常多的網(wǎng)站都使用免費(fèi)的 Google CDN 服務(wù)來加載某些 js、字體樣式庫以提升網(wǎng)頁瀏覽體驗(yàn),例如 jQuery、Google Fonts。但是目前 Google 的大多數(shù)網(wǎng)站在大陸無法正常訪問,因此這些本身是加快網(wǎng)頁載入的庫反而成為了阻塞網(wǎng)站加載的原因。這種情況國內(nèi)的網(wǎng)站并不多,但是國外的網(wǎng)站卻非常多地使用這些庫。一般地,當(dāng) Google CDN 庫稱為網(wǎng)頁加載的限制因素時(shí),瀏覽器狀態(tài)條會(huì)顯示狀態(tài)為 “正在等待 ajax.googleapis.com 的響應(yīng)...” 或 “正在連接...” 等字樣。
如果打開控制臺(tái),能看見 Google CDN 確實(shí)正在阻塞網(wǎng)頁加載。如果等待足夠長的時(shí)間,瀏覽器最終會(huì)放棄加載,并呈現(xiàn)一個(gè)殘缺的網(wǎng)頁,這并不好。下面從網(wǎng)頁開發(fā)者、瀏覽器用戶的角度給出一些解決方案。
對(duì)于網(wǎng)頁開發(fā)者:選用其它 CDN 庫
網(wǎng)頁開發(fā)者必須考慮到這個(gè)問題,因此在設(shè)計(jì)網(wǎng)站時(shí)就應(yīng)該考慮棄用 Google CDN 庫。如果訪者大多來自國內(nèi),可以考慮使用百度 CDN、新浪 CDN 庫,它們都包含了非常常用的 JS 庫文件。如果有面向國際的訪客,則可以考慮使用微軟的 ASP.NET CDN。
例如以下是使用微軟 CDN 加載 jQuery 的一個(gè)范例:
- <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js" type="text/javascript"></script>
如果要使用 Google Fonts,則可以使用 360 提供的代理 CDN。這樣一來,即時(shí)要使用 Google Fonts 網(wǎng)頁字體,網(wǎng)頁的速度也不會(huì)受到干擾和阻塞。
修改 hosts
對(duì)于用戶,我們無法直接令瀏覽的網(wǎng)頁棄用其正在使用的 Google CDN,從而出現(xiàn)無法加載的情況,那應(yīng)該怎么辦呢?解決方案之一就是修改 hosts。通過修改 hosts,強(qiáng)迫 CDN 域名指向指定的 IP,得以成功從 Google 加載這些文件。
值的一提的是,有一部分 Google CDN,例如 fonts.googleapis.com、fonts.gstatic.com,它們可以被解析到首都的 IP 地址,因此如果在 DNS 解析失效的情況下,通過 hosts 將這些域名直接指向首都的 IP 是最好、最快速的。
當(dāng)然,如果 Google 改變心意,首都的服務(wù)器拒絕提供這些域名的緩存服務(wù)的話,就沒有辦法了。至于為什么 Google 不索性把所有的 CDN 都解析到首都,也沒人清楚。
修改 hosts 并不一定是好方法,因?yàn)樗俣瓤赡軙?huì)比較緩慢,另 hosts 可能失效。
使用 Chrome 擴(kuò)展主動(dòng)替換為國內(nèi) CDN
國內(nèi)的一些服務(wù)器通過鏡像或同步拷貝等一些方法能保留一份與 Google CDN 同樣的文件專供國內(nèi)用戶加載。我們可以使用一款名叫 Replace Google CDN 的 Chrome 擴(kuò)展插件,來主動(dòng)替換瀏覽的網(wǎng)頁里的 Google CDN 為國內(nèi)的替代服務(wù)器。
這款插件作者為 @justjavac,Github 項(xiàng)目地址為 github.com/justjavac/ReplaceGoogleCDN,擴(kuò)展地址為 https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice。當(dāng)然你可能需要先使用一些技巧來打開這個(gè)應(yīng)用商店才能安裝。
擴(kuò)展插件支持替換 Google CDN 為中國科技大學(xué)提供的 CDN,支持 ajax/fonts.googleapis.com、themes.googleusercontent.com 的替換,并且支持 HTTPS。在這里要感謝他們。
安裝好這款插件后,瀏覽任何帶有 Google CDN 的網(wǎng)頁時(shí)都會(huì)被跳轉(zhuǎn)到這個(gè)節(jié)點(diǎn),這樣就不會(huì)出現(xiàn)阻塞的情況了。
相關(guān)文章
Google Adsense西聯(lián)匯款領(lǐng)取方式與流程,親身實(shí)踐
這篇文章主要介紹了Google Adsense西聯(lián)匯款領(lǐng)取方式與流程,親身實(shí)踐,需要的朋友可以參考下2016-04-17網(wǎng)站上使用Google DFP廣告管理系統(tǒng)來刊登廣告的教程
這篇文章主要介紹了網(wǎng)站上使用Google DFP來刊登廣告的教程,主要是為了突破普通蘋果Google AdSense的一些限制,需要的朋友可以參考下2016-03-30針對(duì)Google的SEO優(yōu)化中可利用的官方工具使用總結(jié)
這篇文章主要介紹了針對(duì)Google的SEO優(yōu)化中可利用的官方工具使用總結(jié),包括Google Trends、Google AdWords、Google Webmaster、Google Analytics等,內(nèi)地使用注意網(wǎng)絡(luò)連通性,2016-03-22探究Amazon EC2的架構(gòu)及與Google容器服務(wù)間的對(duì)比
這篇文章主要介紹了Amazon EC2的架構(gòu)及與Google容器服務(wù)間的對(duì)比,Amazon彈性計(jì)算云EC2(Elastic Compute Cloud)或稱ECS,是一個(gè)讓使用者可以租用云端電腦運(yùn)行所需應(yīng)用的系統(tǒng)2016-03-17在Google Container Engine上申請(qǐng)創(chuàng)建Docker容器
這篇文章主要介紹了在Google Container Engine上申請(qǐng)創(chuàng)建Docker容器,在國內(nèi)使用的話要注意網(wǎng)絡(luò)連通問題和外幣信用卡或Paypal支付,需要的朋友可以參考下2016-03-16個(gè)人博客的SEO優(yōu)化技巧與Google站長工具的使用
這篇文章主要介紹了個(gè)人博客的SEO優(yōu)化與Google站長工具的使用,包括對(duì)博客網(wǎng)站的tag和url等方面設(shè)置的技巧,的需要的朋友可以參考下2016-02-26- Google是如何做代碼審查的? 代碼審查有什么作用?本文將提供Google代碼審查的相關(guān)內(nèi)容供大家了解,希望對(duì)大家有所幫助和啟發(fā)2016-02-17
SEO統(tǒng)計(jì)數(shù)據(jù)分析:Google排名高的網(wǎng)頁特點(diǎn)有哪些?
什么樣的網(wǎng)頁排名較高呢?本文將提供SEO統(tǒng)計(jì)數(shù)據(jù)分析Google排名高的網(wǎng)頁特點(diǎn)匯總供大家了解,希望對(duì)大家有所幫助和啟發(fā)2016-01-28簡單了解Google的主力數(shù)據(jù)存儲(chǔ)系統(tǒng)Bigtable
這篇文章主要介紹了Google的主力數(shù)據(jù)存儲(chǔ)系統(tǒng)Bigtable,Bigtable可以被看作一個(gè)非關(guān)系型數(shù)據(jù)庫式的分布存儲(chǔ)技術(shù),需要的朋友可以參考下2016-01-27初窺Google網(wǎng)站的服務(wù)器基本架構(gòu)
這篇文章主要簡單介紹了Google網(wǎng)站的服務(wù)器基本架構(gòu),文中的分析事件較早因而由于谷歌內(nèi)部技術(shù)的快速迭代,一些注入MapReduce之類的技術(shù)可能已經(jīng)不在應(yīng)用范圍中,但整體的架構(gòu)2016-01-27