3

私は、大きな javascript ライブラリ ( jquery UIなど) を使用する Rails アプリケーションに取り組んでおり、独自の javascript ファイルもいくつか持っています。アセットパッケージャーを使用して、独自の JavaScript をパッケージ化しています。これらのファイルを提供する 2 つの方法を検討しています。

  1. http://code.google.com/apis/ajaxlibs/documentation/#jqueryで説明されているように Google Code から jQuery ライブラリにリンクし、アセット パッケージャーを使用して JavaScript ファイルを個別にパッケージ化して提供します。

  2. jquery ライブラリを自分でホストし、自分の JavaScript と一緒に 1 つの大きなマージされた JavaScript ファイルとしてパッケージ化します。

もちろん、私のホスティング ソリューションが Google のコンテンツ配信ネットワークを打ち負かすことはありません。そのため、最初は、オプション 1 を使用すると、エンド ユーザーのページ読み込みが速くなるだろうと想定していました。

ただし、自分でそれらを提供する場合、ユーザーはマージされた JavaScript を取得するために 1 つのリクエストを発行するだけでよいことに気付きました (マージされた JavaScript に対して 1 つと、Google が提供するライブラリに対して 1 つではなく)。

最良のエンド ユーザー エクスペリエンスを提供するアプローチはどれですか (おそらく、読み込み時間の短縮という形で?)

4

3 に答える 3

4

Google の優れた点は、多くの Web サイトで使用されているため、ユーザーが Google JS ライブラリを使用したサイトを既に閲覧している可能性があることです。ファイルをダウンロードする必要があります。

google.load()個人的には、ファイルを結合して自分のサーバーからロードしようとするのではなく、( 経由で) Google を使用することに固執します。(Google のローダーを使用してファイルを遅延ロードし、すべてのライブラリをロードしてそのうちの 1 つだけを使用するのではなく、必要なときにのみロードすることもできます。)

于 2010-04-28T01:52:21.537 に答える
4

「場合による」と言うでしょうが、ほとんどの場合、インターネットに面したサイトにはオプション 1 (Google ホスティング) を使用します。イントラネットの場合、いくつかの理由ですべてを内部でホストしますが、それはあなたの質問の範囲外です。

全体的に考慮すべき点がいくつかあります。

  • ファイルが正しくキャッシュされている場合、ユーザーは強制更新を除いてファイルをダウンロードしていません。
  • Google にはあなたよりも多くのサーバーがあります :) さらに多くのサーバーがあり、特定のリクエストに最適に対応できるように地理的に配置されています。単一または少数の場所からホスティングしていると思います。
  • ブラウザは、スクリプトを順次実行する場合でもダウンロードを並列化するため、ユーザーと Google から同時にダウンロードされ、スループットが向上します。
  • 他のサイトでは、Google を使用して jQuery をホストしています (あなたは現在 1 つを使用しています)。ユーザーがそれらのいずれかにアクセスしたことがある場合、それらのサイトには既にファイルがキャッシュされているため、リクエストは行われませんでした。

すべてのファイルを 1 つのファイルでホストできますが、これにはいくつかの重みを考慮する必要があります。

  • その 1 つのファイルのサイズはどれくらいになりますか? スクリプトで何かを変更したときに、ユーザーはファイル全体を再度ダウンロードする必要がありますか?
  • 複数のリクエスト (および DNS ルックアップ) は、そのファイルのダウンロード時間よりも安価ですか?
  • 帯域幅に料金を支払いますか? :)

カスタム コードの割合とフレームワークの割合に応じて、Google の CDN は静的な js トラフィックのかなりの部分をサーバーから取り除き、サービスを提供したり他のことをしたりできるようにします(これは、トラフィックの多いサイトにとって大きなメリットです)。 )、スクリプトを変更すると(新しいフレームワークのリリースよりもはるかに一般的です)...クライアントはフレームワーク全体ではなく、それのみをダウンロードします。

于 2010-04-28T01:57:48.413 に答える
0

帯域幅とダウンロード速度の実際的な問題に加えて、特にプライバシー ポリシーと要件に応じて、潜在的に法的または少なくとも道徳的な問題もあります。

〈ティンホイルビーニー〉

Google (または他の誰か) の CDN を使用すると、ページのアドレスと追跡 Cookie を含むリファラー ヘッダーが渡されます。おっと!Google は、ユーザーが js をダウンロードしたときにどのサイトを見ていたかを認識できるようになりました。ブラウザーのキャッシュによって多少緩和されます。既に取得している場合は再ダウンロードすることはなく、かなり積極的なキャッシュ制御を使用します。

ただし、追跡情報を第三者と共有しないというプライバシー ポリシーを公開している場合は、ユーザーに嘘をついていることになります。政府の Web サイトを開発しているなどの理由で、そのようなプライバシー要件を含める必要がある場合は、法律に違反しています

</tinfoilbeanie>

広告ネットワークやオフサイトの画像などでもまったく同じことが起こるため、大した問題ではないかもしれませんが、プライバシー ポリシーの要件を確認してください。

Google の特定のケースについては、googleapis の利用規約に明示的に記載されています。

...これには、ユーザーのコンピューターに一意に識別可能な追跡 Cookie を保存することが含まれます。


StackOverflow のプライバシー ポリシーでさえ、Google がサイトにアクセスしたことを知らせるために ping を受ける可能性があることや、一般的な QuantServe 追跡画像がサイトに埋め込まれていることについては言及していないことに注意してください。「私たち」がこれとあれを行うと述べていますが、おそらく「私たち」は QuantServe や Google を含むことを意図したものではありません。プライバシーは毛深いものになる可能性があります。

于 2010-04-28T02:29:51.743 に答える