5

ここでダウンロードしてローカルホストの学習プロジェクトで使用したjsSHA1.3.1を使用しています。次のようにリモートを参照して得たコピーとは少し異なる結果が得られます。

<script src="https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js"></script>

ここで@Andreasによるこの優れた回答のおかげで、リモートコピーは私にとってうまく機能します。

しかし、それは私に新しい質問を残します:コピーを含めることとリモートjsライブラリを参照することの理由は何ですか?それは、ライブラリを「ベンダー」して、その後のコードの変更からアプリを保護するようなものですか?

4

2 に答える 2

11

アプリケーションがWWWで利用できる場合は、よく知られている外部URLの使用を検討する必要があります。


<script type="text/javascript"
   src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js">
</script> 

以下のこの例は、Googleのサーバーからjquery1.8.0の縮小バージョンを取得します。


  • この方法で得られる利点は、キャッシュから得られます。

  • 潜在的なユーザーがあなたのウェブサイトに最初にアクセスするのが遅くてがっかりすることを望まないでしょう。初めての訪問者がjQueryにこのURLを使用する私のサイトにアクセスした場合、彼女のブラウザはおそらくそれをキャッシュしているので、ロードする必要はありません。

  • 不変のバージョン管理されたリソース(jquery/currentのようなものの代わりにjquery/1.8.0)を使用すると、開発者は本番コードの重大な変更を追跡する必要がなくなり、これらのリソースを確実にキャッシュできます。

  • リソースをダウンロードする必要があり、URLがCDNでホストされている場合、リソースはユーザーのネットワークに近いサーバーからロードされる可能性があるため、レイテンシが低くなる可能性があります。この例のURLは、CDNであるGoogleHostedLibrariesでホストされています。詳細については、 https://developers.google.com/speed/libraries/devguideを参照してください。

  • このようなディスカッションでよく見られるもう1つの議論は、リソースをダウンロードする必要がある場合、ブラウザが制限されているため、リソースが自分のサーバー上になく、ページに含まれるリソースが10個増えると、クライアント側のリソース読み込みの並列処理を向上させることができるというものです。少数(最近のブラウザでは6程度)のリソースをロードすること自体が同じサーバーを形成します。

  • インターネット全体のWebアプリケーションがセキュリティ上重要である場合は、安全に管理できる限り多くのアプリケーションを制御し続ける必要があります(静的な不変またはほぼ不変のリソースは、比較的簡単に安全に管理できます)。

  • HTTPS上で実行される私の銀行のeバンキングアプリケーションがサービスを提供するためにGoogleのHTTPサーバーに依存する場合、eバンキングアプリケーションのクライアント側部分に対するGoogle権限を付与し、HTTPS接続の実質的にすべての利点を排除します。そのサーバー。不正なクライアントスクリプトで実行できないことはほとんどありません...

  • アプリケーションにローカルでアクセスする場合は、パフォーマンス(サーバーへのアクセスは、遅延と帯域幅の両方の点でリモートサーバーにアクセスするよりも高速である必要があります)と信頼性の理由(依存していない)の両方の理由から、アプリケーションに含める必要があります。外部インターネット接続および稼働中のリモートサーバー上)。

于 2012-12-02T20:30:42.473 に答える
3

開発者がJSライブラリへの「ホットリンク」に満足しているかどうかにかかっています。

あなたが投稿した特定のURLに関して、

https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js

私はそれを参照することを警戒するでしょう。これはソースコードのマスターブランチであり、いつでも重大な変更が含まれる可能性があります。コードベースを移動して再構築することもできます。その場合、上記のURLが404になるため、アプリケーションが機能しなくなります。

より良い解決策は、実際にライブラリの特定のバージョンを参照することです。これにより、jsSHAライブラリに関する限り、アプリケーションが期待どおりに既知の方法で動作し、引き続き動作することが保証されます。

これを行うにはいくつかの方法があります。バージョンを明示的に指定する特定の固定URLを参照できます

http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js

タグ付き(3.0.2)であるため、少し安全ですが、ソース管理を参照しています。CDNが存在する場合、これは実際にはCDNを介して実行する必要があります。googlecode.comのURLがCDNURLだとは思いません(間違っている可能性があります)。もちろん、適切なCDNまたは外部リンクを使用してJSライブラリを参照することは一般的な方法であり、この例はJQueryページで確認できますが、これは多くの場合、ページパフォーマンスの強化の一部として行われます。CDNはユーザーの地理的な場所に合わせて最適化されているため、(メインサーバーではなく)CDN上のコンテンツへの参照がより高速に提供されます。ユーザーエクスペリエンスのメリットがあります。ページの読み込み時間がユーザーベースにとって重要な場合に役立ちます。

別の、そして最も安全な方法は、JSライブラリのコピーを独自のソース管理に保持し、独自のインフラストラクチャを使用してそれを参照することです。それはあなたと一緒です、それは修正されたバージョンであり、リストラ、サイトのダウンなど、何かが変わっても驚くことはありません。

于 2012-12-02T18:48:08.087 に答える