ブラウザはキャッシュをどのように利用するか、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 ブラウザーが行うこととほとんど同じです。この唯一の利点は、スクリプトをローカル マシンにプリロードすることですが、これは必要ないはずの余分な労力のように思えます。