web-dev-qa-db-ja.com

利点と。 jQueryをローカルでホストする場合の落とし穴

現在、Google CDNからjQueryおよびjQueryUI(およびjQueryUI CSS)ライブラリを取得しています。 google.load("jquery", "1");を呼び出すことができるので、これが好きです
および最新のjQuery 1.x.xが使用されます。

ここで、セキュリティのためにライブラリをローカルにプルします。

私はそれらをローカルで引き出せてうれしいですが、私は気をつけるべき他の利点と落とし穴のいくつかは疑問に思っていますか?

76
orolo

CDNに保存することの主な利点は、自分のWebサイトからダウンロードしたファイルと並行してファイルをダウンロードできることです。これにより、すべてのページの待ち時間が短縮されます。そのため、これの裏側はローカルでホストすることの落とし穴です-遅延の増加。その主な理由は、ブラウザーが同じWebドメインに同時に確立できる接続の数が制限されていることです。 IE6では、これは同じドメインへの2つの同時接続にデフォルト設定されていました-IEのすべての開いているウィンドウ間で共有!!IE8 +では、デフォルトで6に改善されましたこれはFF/Chromeとインラインですが、多くの画像があり、スプライトを使用していない場合は、待ち時間が長くなります。

CDNを使用すると、最新バージョンを取得するのではなく、常にライブラリバージョンを明示的に設定しますになります。これにより、新しいバージョンがコードを破壊するリスクが軽減されます。 jQueryではあまりありませんが、可能です。

CDNを使用するもう1つの主な利点は、サイトのトラフィックの削減です。 GB単位で支払う場合、またはリソースが限られた仮想サーバーを使用している場合、一部のコンテンツをパブリックCDNに変換すると、サイト全体のパフォーマンスが向上し、ホスティングコストが下がることがあります。

@Xaverによるこの質問に対する他の回答も必ず読んでください。これは非常に良いトリックです

100
Daniel Dyson

私は常にGoogleのCDN(Content Delivery Network)を使用しています。ただし、念のため、オフラインの場合:

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

Google CDNのjQueryを取得し、必要に応じてローカルにフォールバックします

編集:IE6をサポートする必要がなく、サイトでhttpsが部分的に使用されている場合は、httpも削除できます。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
137
Xaver

他の人が利点をカバーしています。落とし穴:

  • 独自のサーバーからのコンテンツのみを含める場合、サイトを機能させるには、ファイアウォールなどによってブロックされていないサーバーを実行する必要があります。サードパーティからスクリプトをプルすると、サイトを機能させるために実行およびブロック解除する必要がある2台のサーバーになります。

  • プルするサイト<script> fromは、サイトでのユーザーエクスペリエンスを完全に制御できます。グーグルが悪を感じているなら、キープレスを記録するためにjQueryのコピーに何かを入れ、ウェブ追跡データベースに結びつけるためにあなたが今いるページから個人情報を盗み、すべてのフォームに「I love Google!」コメントを投稿させる、 等々。

Googleはおそらく実際にそれを行うつもりはありませんが、それはあなたの制御の及ばない要因であり、確かに他のスクリプトホスティングサービスで心配する何かです。統計スクリプトがマルウェアローダーによって侵害される前に、インシデントがありました。

サードパーティからのスクリプトを含めるには、サイトの1ページであっても、そのホスト名に表示されるユーザーがアクセス可能なすべての機能(Webに面した管理機能を含む)で100%信頼する必要があります。

20
bobince

Google CDN:

  • キャッシュ、パフォーマンスに優れ、より多くのユーザーが既に持っている可能性があり、並行してダウンロードします
  • これまでに、heaver forbid cdnがダウンした場合。あなたはめちゃくちゃです。
  • 新しいバージョンが既存のプラグインまたはサイトを壊す場合、遅すぎる可能性があります。

ローカル:

  • ネットに接続せずに開発可能
  • 縮小することに加えて、gzipすることでパフォーマンスの利点を得ることができます
13
Moin Zaman

ローカルバージョンを使用することを好みます。何を提供するかを制御できないためです。たとえば、私の国では法的な問題であるため、ユーザーがgoogle-analyticsなどの影響を受けないようにします。

11
Dr.Molle

利点:(特にGoogleのCDN向け)

  1. ファイルと並行してダウンロードします。他の回答はこれにさらに対処します
  2. Googleのサーバーは、コンテンツをより速く物理的に配信できる可能性が高い
  3. CDNのHTTPキャッシュはすべてのサイトでniversalであるため、一般的なライブラリとフレームワークは既にユーザーのマシン上にある可能性があります
  4. あなたの帯域幅は、大きなライブラリファイルを提供するために行く必要はありません
8
Praveen Prasad

GoogleのCDNを使用することは、事実上あらゆる見方で良いことです。

パフォーマンスは改善され(サイトが実際にビジーでない限り、かなりわずかですが)、サーバーが送信しなければならないデータの量が減少します(ただし、jQueryはダウンロードするのに正確な大規模なものではありません)など。

使用したくない唯一の理由は、Googleを信頼していない場合です。これを使用することで、他の方法では公開したくないURL(たとえば、サイトの安全な領域)の知識など、サイトのトラフィックプロファイルに追加の情報ウィンドウを効果的に提供します。

セキュリティに不安がある場合は、これを使用しないように説得するのに十分かもしれません(結局、自分でホストすることでサイトのクロールが遅くなるわけではありません) Googleが既にサイトについて十分に知っているので、これを追加してもそれほど違いはありません。

3
Spudley

おそらく私は最近は少数ですが、本当に必要な場合以外はCDNを使用したくないと思います。使用を開始する主な要因は次のとおりです。

  • クロスジオユーザー。ウェブサイトを米国でホストしているが、ヨーロッパのユーザーが目に見える場合-CDNは読み込み時間を改善します。
  • 大量のユーザーや大量のコンテンツがあるため、1台のメインサーバーではもう十分ではありません。任意のポルノビデオWebサイト(または、必要に応じてNetflix)を考えることができます。ビデオストリームは重い負荷であり、CDNを使用するとメインサーバーの負荷がはるかに少なくなります。

しかし...ポイントは、これらのポイントが実際に世界のウェブサイトの90%に当てはまらないということです。世界中の何百万人ものオンラインユーザーがいるFacebookではなく、毎秒数百GBのGBが転送されるPornhubではないでしょう。

あなたのウェブサイトがあなたの都市/国のユーザーをターゲットにしていて、あなたが持っているユーザーの量に対して1つのサーバーの容量で十分な場合、なぜCDNが必要なのでしょうか?市内のユーザーの方が速く、メインサーバーからすべてをローカルで取得する方が簡単です。


一般的にはCDNについてでしたが、jQueryまたはその他のライブラリに関する実際の質問に近づきましょう。

あなたのウェブサイトが1年以上もメンテナンスなしでアクセスし続けられるようにしたいなら、例えばローカルに置いてください。図書館は、たぶん、あなたがたぶん従おうとしない狂気のテンポで更新されています。そして、古いバージョンは最終的に削除されています。さらに、ライブラリ全体が死ぬ可能性があります(おそらくjQueryには適用されません)。

私の最近の経験から-私は3.x.x(2012年)から5.x.x(2019年春)に保守しているWebサイトのTinyMCEを更新しました。このWebサイトは、ロジックのこの部分をメンテナンスせずに7年間機能していました。当時は「縮小」の概念はなく、CDNは現在ほど一般的ではありませんでした。しかし、たとえそれらが一般的であっても、あなたは今から3-5-10年後に何が起こるか決してわかりません。通常、あなたはあなたがあなたのウェブサイトをあなたがそれを維持しなくても生き続けることを望みますか?ただし、今日CDNからjQueryを取得した場合、このリンクは5年後に壊れる可能性があります(おそらく壊れるでしょう)。

@Xaverが示唆したように、CDNおよびローカルバージョンへのフォールバックを使用したソリューションは、適切な妥協策となります。しかし...多分ただCDNリンクを取り除く? ;)

1
The Godfather

私にとって、それは本当にあなたがどれだけコントロールしたいかにかかっています。あなたが私のようで、仕事や旅行の際にローカルホストで開発する必要がある場合。 jqueryファイルをローカルに配置する方が、Googleや他の場所でホストするよりも優れています。

0
WebGoonie