7

Web アプリケーションの JQuery や Prototype などの JavaScript ライブラリをホストするために、Google APIのような CDN を使用することを支持するすべてのケースを聞いてきました。より高速で、帯域幅を節約し、スクリプトの並列読み込みを許可します。しかし、最近 Douglas Crockford のjson2.jsスクリプトで次のコメントを見つけました。

独自のコピーを使用してください。あなたが制御していないサーバーからコードをロードすることは、非常に賢明ではありません。

この主張の背後にある彼の主張は何なのか、それは特に Google のようなパブリック CDN のユーザーを対象にしたものなのか、それとも何か他のものなのか、興味があります。

4

8 に答える 8

10

彼が Google のような専門的にホストされている CDN について話していると仮定すると、最善の策は次のようにすることです。

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
<script>window.jQuery || document.write("<script src='js/libs/jquery-1.5.1.min.js'>\x3C/script>")</script>

( http://html5boilerplate.com/から取得)

そうすれば、Google の CDN がダウンした場合にウェブサイトが壊れるリスクを負うことなく、すべてのメリットを享受できます。

しかし、彼は言った:

独自のコピーを使用してください。あなたが制御していないサーバーからコードをロードすることは、非常に賢明ではありません。

彼が CDN について話しているとは思えません。彼は「ランダムな Web サイトからスクリプトをホットリンクしないでください」と言っているだけだと思います。

Web サイトがスクリプトの場所を変更したり、スクリプトを変更したりする可能性があるため、これを行う必要はありません。CDN がこれを行うことは決してありません。

于 2011-06-03T15:15:13.103 に答える
2

基本的には信頼関係です。ホストされたファイル内の何も変更しないようにホストを信頼する必要があり、ファイルの可用性を信頼する必要があります。URL が変更されないことを絶対に確信できますか? サーバーのダウンタイムがアプリケーションのダウンタイムにつながるという事実に満足していますか?

于 2011-06-03T15:13:47.533 に答える
0

The reason is, if the server you are dependent on goes down, and yours doesn't. The experience of your site suffers. There are ways to have a fallback in place so if jquery or some other script doesn't load, then you can use a copy you host as a backup.

The other time you shouldn't use it is in a Intranet application scenario, where the bandwidth is not typically an issue.

A way to create a fallback from Jon Galloway: http://weblogs.asp.net/jgalloway/archive/2010/01/21/using-cdn-hosted-jquery-with-a-local-fall-back-copy.aspx

<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined')
{
    document.write(unescape("%3Cscript src='/Scripts/jquery-1.3.2.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
于 2011-06-03T15:11:42.520 に答える
0

If a public server's js is compromised (availability, security or bug-wise), then the visitors to your site will be affected and likely blame you. On the other hand, what are the chances of Google's CDN being compromised over the chances of some smaller company's server? You also lose out on all the caching advantages that a CDN gives you when you host locally.

于 2011-06-03T15:11:54.950 に答える
0

これらの他の回答のいくつかは確かに有効ですが、少し異なる/追加の理由があります。

最初のリクエストで、特定のページに必要な静的コンテンツを評価するプロセスがあります。バックグラウンドでは、この静的コンテンツ (js、css) がマージされて 1 つのファイル (JS 用に 1 つ、CSS 用に 1 つ) に縮小され、その後のすべてのリクエストは、複数ではなく 1 つのファイルで処理されます。

理論的には、CDN で提供される可能性のあるファイルを除外して CDN を使用することもできますが、実際には (除外を処理するコードを実際に追加する必要があるため) CDN を使用するよりも簡単で、場合によっては高速です。

于 2011-06-03T15:11:56.440 に答える
0

jQuery はオープンソースです。内部に変更を加えた場合、明らかに、別の人のサーバーからホストすることはできません。一般に、他人のスクリプトをホストすることはセキュリティ リスクです。彼らはあなたに何も言わずにスクリプトを変更する可能性があり、今あなたはそれをあなたのページにリンクしています。

それは信頼の問題です。どのような CDN でも、目的のスクリプトの場所に悪意のあるスクリプトをホストしないように安全であると信頼できますか?

于 2011-06-03T15:12:01.933 に答える
0

他のすべての回答に加えて:

SSL (つまり、https) 経由でページを提供することについて心配したいのですが、別のソースからのストレート http 経由で JS を提供する必要があります。ブラウザは、セキュリティで保護されたアイテムとセキュリティで保護されていないアイテムについて (時には驚くべき方法で) 文句を言うことがあります。

さらに、noscript 拡張子 (または類似のもの) を使用してブラウジングするユーザーは、複数の異なるソースから JS を実行できるようにする必要があります。主要な CDN を使用している場合はそれほど大きな問題ではありませんが (過去のある時点で許可されている可能性があるため)、JS の一部しか許可されていないことを心配する必要があります。

于 2011-06-03T15:24:53.337 に答える