2015-02-06 51 views
-1

我使用CDN託管的jQuery。CDN託管的jQuery庫的最佳協議

之間有什麼實際的區別:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.js"></script> 

<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.js"></script> 

(有/無HTTP前綴)

哪種方法是 「最佳」(最安全,最快) ?

+3

我認爲第二個選項告訴瀏覽器使用任何協議正在使用中的頁面作爲一個整體,因此,如果您打開網站到https您的腳本加載也將通過SSL。 – n8wrl 2015-02-06 15:52:26

+1

保持'https'打開的選項總是比強制'http'更安全...... – 2015-02-06 15:53:28

+0

區別在於第二個例子中,瀏覽器會自動爲您選擇協議(http vs https vs文件),具體取決於如何整個頁面正在加載。 – j08691 2015-02-06 15:53:57

回答

2

此代碼將使用HTTP協議:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.js"></script> 

該代碼將使用HTTP或HTTPS協議,這取決於協議它的加載頁面使用:

<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.js"></script> 

一個重要需要注意的是,在進行本地開發時,上述將嘗試使用file://協議,這將失敗。

爲了解決這個問題,你可以使用此代碼:

<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.js"></script> 
<script>!window.jQuery && document.write(unescape('%3Cscript src="ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.js"%3E%3C/script%3E'))</script> 
+0

謝謝布萊克。 'document.write(unescape('%3Cscript')的目的是什麼,而不僅僅是'document.write(' crashwap 2015-02-06 16:25:57

+0

這真的是一個很好的問題。我從http://www.paulirish.com/2010/the-protocol-relative-url /引用了HTML5 Boilerplate。但HTML5 Boilerplate實際上使用了您記下的語法:https://github.com/h5bp/html5-boilerplate/blob/master/src/index.html – 2015-02-06 16:34:32

+0

順便說一句,布雷克,我希望我能爲你提供一個有關本地開發人員試圖使用'file://'協議的註釋+1,這是一個非常有用的珍聞。希望別人能幫助我。 – crashwap 2015-02-06 16:39:58