1

1 回のリクエストで S3 (または任意の CDN) から複数のファイルを取得する方法はありますか?

たとえば、S3 に 4 つのファイルがあります。

  • example.com/cdn/one.js
  • example.com/cdn/two.js
  • example.com/cdn/three.js
  • example.com/cdn/four.js

一度にそれらの任意の組み合わせをリクエストできるようにしたいと思います。現在、それらを個別に含める必要があります。

<script src="example.com/cdn/one.js" />
<script src="example.com/cdn/two.js" />

しかし、私はそれらを 1 つの要求として含めたいと思います。

example.com/cdn/code.js?one&two

必要な組み合わせを 1 つのファイルにまとめることを検討しましたが、現実的には組み合わせが多すぎます。それらをすべて 1 つのファイルにまとめることも検討しましたが、それはとてつもなく大きくなります。

4

2 に答える 2

1

まず第一に、あなたの質問は、S3 / CDN全般に関連するというよりも、JSに関するものです。そして、あなたの質問に答えるために: 1 つの http リクエストでそれらを「結合」することはできません。

それらを連結して縮小したくない場合は、スクリプトの読み込みを処理できるRequireJSを検討する必要があります。これは非同期であり、ブラウザーのレンダリングをブロックしません。

これは、非同期読み込みに関する非常に優れた記事です: css-tricks.com - Thinking Asyncは、より良い洞察を提供します。

コメント後に編集:

実際、PHP を使用して JS ファイルをオンザフライで連結および縮小できますが、これによりサーバーに追加の負荷がかかり、CDN から得られる利点が失われます…別のアプローチは、パックするビルド システムを使用することです。生産に入る前のすべて。

このトピックの詳細については、次のリンクを参照してください。

開発システム (Mac の場合) でその場でミニファクションを行うには、 CodeKit を試してください

于 2012-07-08T17:12:21.907 に答える
0

これを行う方法の 1 つを次に示します (one&two&three のみを使用し、file=one&file=two&file=3 に注意すると仮定します):

function getJs() {
  var url = window.location.toString();
  var query = url.split("?");
  var params = query.split("&");

  // iterate through array of params and write JS
  for (i=0; i<params.length; i++) {
    var name = params[i] + ".js";
    document.write("<script defer language='javascript' type='text/javascript' src='" + name + "'><\/sc" + "ript>");
  }
}

これは、ページが読み込まれた後に読み込まれます。次に、おそらくHTMLに入れます。私はこれをテストしていませんが、あなたが探しているものだと思います。

于 2012-07-13T14:51:19.307 に答える