iT邦幫忙

3

jQuery/JavaScript Liberary在CDN失效時failover作法

像是GoogleMicrosoft都有提供像jQuery或是其他一些好用的JavaScript Library的CDN機制,讓世界各地的人,在存取這些重複率極高的檔案時,速度可以更快。

雖然CDN原則上是不會有存取不到的問題,但是天有不測風雲,被閃電打中的機率也不是沒有,所以使用時,如果有一個failover的機制,在CDN失敗的時候,轉讀local端的檔案,這樣就萬無一失了。
做法很簡單,以jquery自家網站的作法來說明:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="http://code.jquery.com/jquery-1.4.2.min.js"><\/script>');</script>

第1行使用的是google cdn的網址

而一旦第1行執行失敗,第2行 !window.jQuery的結果就會是true,然後就會去執行documwnt.write的內容,也就是寫入自家網站host的jquery。

除了jquery之外,其他CDN host的JS檔都可以如法泡製。

同場加映一個不錯的JS CDN網站:http://www.cdnjs.com/,這裡專注的是一些大型CDN較不放置的一些JS專案,在開發階段拿來用還不錯。如果要用上production,上面的作法好像就更實用了 :p


1 則留言

0
player
iT邦大師 1 級 ‧ 2012-01-30 14:48:58

這麼麻煩做什麼?
何不把jquery.min.js複製一份到你自己的網站?
如果你的網站掛了
那這個檔案也用不著讀取了

saiue iT邦研究生 1 級 ‧ 2012-01-30 16:30:42 檢舉

可以降低網站的流量
這樣應該也不錯~~

wordsmith iT邦高手 1 級 ‧ 2012-01-30 18:35:09 檢舉

其實現在JavaScript的Library越用越多,通常用上jQuery的,也會用上一堆UI外掛或是工具,這些JS檔如果都用CDN來存取,可以減少下載的時間。因為你可能還沒到我的網站之前,就已經從CDN取用過這些檔案了,這樣一來就不用重新再下載一次。

另外,CDN會從離User最近的地方來下載這些檔案,所以對於不同地理區域的人來說,這也能帶來好處。

我要留言

立即登入留言