0

重要な点:ブラウザーはキャッシュをどのように利用するのか、Web ページ固有のキャッシュ コンテンツを読み込むのか、それとも他のページのスクリプトにアクセスするのか?

具体的なケース: jQuery をロードする場合、ロードする前にそれがユーザーのキャッシュにあるかどうかを確認するのがベスト プラクティスだと思いますよね? しかし、キャッシュされたコピーを使い果たした場合、それが互換性のあるバージョンであることを確認する必要があります。そうでない場合は、自分のバージョンの jquery をロードしますが、2 つのコピーがロードされていませんか? これは、非競合モードでない限り、当然多くの問題を引き起こします。

大まかなコンセプト: 私の質問は、主にブラウザのキャッシングの仕組みに関するものだと思います。ユーザーが別の Web サイトで Google CDN から jQuery を読み込んでいて、私が Google CDN バージョンを使用している場合、Google から 2 回目に読み込まれますか? それとも、Microsoft や jQuery CDN などの別の CDN からの同じ jQuery バージョンですか? それとも、ブラウザーはキャッシュを取得した特定のページのキャッシュにのみアクセスしますか?

同様の状況: 最後になりましたが、重要なことです。たとえば、私が超低帯域幅で実行している場合や、ピース コアの友人が限られたアクセスを最大限に活用する必要があるとします。すべての一般的なスクリプト ライブラリを、毎回オンラインでロードするのではなく、ローカルに保存してアクセスするにはどうすればよいでしょうか? 当然のことながら、JavaScript を完全にブロックすることをお勧めしますが、機能上必要な場合に備えて。私にとって、opera ユーザー スクリプト関数、グリースモンキー、html5 ローカル ストレージ、または何らかのキャッシュ ツールはすべて可能性がありますが、私の検索では、実行方法を知っているものは見つかりませんでした。そして、どのように進めればよいかを本当に理解できるほど、すべてを十分に理解しているわけではないと確信しています。

どうもありがとう!

4

1 に答える 1

2

ブラウザはキャッシュをどのように利用するか、Web ページ固有のキャッシュ コンテンツをロードするか、または他のページからスクリプトにアクセスしますか?

ただし、各ブラウザはそれが機能することを望んでいます。多くの場合、ホストされている各ファイル (スクリプト、html、画像に関係なく) には、ファイルを再ダウンロードするタイミングをブラウザーに伝えるための有効期限があります。ブラウザーは、構成されているものを (デフォルトまたはユーザーによって) オーバーライドすることがあります。

他のページのスクリプトとは、次のことを意味します。

//Option 1 - remote script
<script src="somesource" type="javascript/text"></script>

//Option 2 - inline script
<script type="javascript/text">
$(document).ready(function()....);
</script>

オプション 1 では、通常、URL が正確に一致する場合、ブラウザーはダウンロード済みのソースを再利用します。オプション 2 では、コードはページの一部であり、HTML コードのインラインであるため、毎回ダウンロードする必要があります。

jQuery をロードする場合は、ロードする前にユーザーのキャッシュにあるかどうかを確認するのがベスト プラクティスだと思いますよね?

リモート ホストからのみページを作成し、標準の Web ブラウザ (Chrome、IE、FireFox など) を使用していると想定しています。この場合、キャッシュにアクセスできず、ブラウザーが既にスクリプトをキャッシュしているかどうかを検出することもできません。問題ではないだけでなく、ブラウザが再ダウンロードするかどうかを決定します (オプション 1)。

また、ブラウザの仕組みを混乱させているようです。一般に、ページのリクエストごとに、ブラウザはイメージ、html、css、javascript、またはその他のリソースを空にし、指定された URL を取得します。指定されたプライマリ リクエストが別のセカンダリ + リクエスト (script/img/css など) を指している場合は、オプション 1 に戻り、必要に応じてそのセカンダリ + リクエストをロードします。私の知る限り、Web ブラウザは、リクエストごとにロードされたという理由だけで、リクエストごとにセカンダリ リクエストをロードし続けません。これは、大きな問題を引き起こすためです。

したがって、私の質問は主にブラウザのキャッシュがどのように機能するかに関するものだと思います。ユーザーが別の Web サイトで Google CDN から jQuery を読み込んでいて、私が Google CDN バージョンを使用している場合、Google から 2 回目に読み込まれますか? それとも、Microsoft や jQuery CDN などの別の CDN からの同じ jQuery バージョンですか?

繰り返しますが、これは各ブラウザ次第です。一般的に言えば、2 つの独立した Web サイトが同じリクエスト URL (たとえば、Google CDN の jquery) を使用する場合、ブラウザーはキャッシュされたバージョンを使用する可能性が最も高くなります (オプション 1)。

2 つの独立した Web サイトが同じ名前のファイル名を要求するが、異なる URL を使用する場合、Web ブラウザーは名前だけでファイルが同じであることを 100% 確信できないため、(一般的に) それぞれがダウンロードされます。 .

すべての一般的なスクリプト ライブラリを、毎回オンラインでロードするのではなく、ローカルに保存してアクセスするにはどうすればよいでしょうか?

Web ブラウザーにローカル リソースをすぐに使用するように手動で指示できるとは思えません (私の最後のコメントを参照してください)。本当に帯域幅の小さいアプリケーションを作成するつもりなら、その方法について Google でリソースを検索することをお勧めします (ほとんどの場合、jquery mobile のようなモバイル内部製品とソリューションを検索します)。

リソースをローカルにロードする

確かにこれを行うことができますが、私はまだお勧めしません. できることは、Web サーバーを PC (IIS Express、ISS、Apache など) にローカルにロードすることです。その後、DNS サーバーをローカルにロードするか、hosts ファイルを編集できます。ホストファイルを次のように変更した場合:

127.0.0.1 ajax.googleapis.com

これhttps://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.jsにより、ローカル Web サーバーから実際にファイルを要求するための要求が作成されます。ローカル Web サーバーで実行されているアプリケーションは、ファイルがローカルであるかどうかを判断してローカル バージョンを使用し、そうでない場合は外部 DNS を使用して IP を判断し、ダウンロードします。

これはまったく問題ありませんが、Web ブラウザーが行うこととほとんど同じです。この唯一の利点は、スクリプトをローカル マシンにプリロードすることですが、これは必要ないはずの余分な労力のように思えます。

于 2012-06-09T06:12:15.183 に答える