2011-08-06 4 views
1

外部ファイルのハッシュをHTMLファイルに含めることが可能かどうかは疑問でした。これは、基本的に2つの目的に役立ちます。キャッシュに含めるファイルのハッシュをHTMLで提供していますか?

  • 暗号化されていないコンテンツを暗号化されたページに含める。

  • は、後者の場合には複数のページに

レッツ・フォーカスを使用して作られたアップ例と、それを明確にされているリソースのためのより多くのキャッシュを許可する(ハッシュは、データの整合性を確実にするでしょう)

<script type="text/javascript" src="jQuery-1.5.1.min.js" hash-md5="b04a3bccd23ddeb7982143707a63ccf9"> 

ブラウザは、最初にファイルをダウンロードしてキャッシュできるようになりました。同じハッシュを使用する次のページごとに、キャッシュされたバージョンを使用できることは明らかです。このテクニックは、ファイルの起源、ファイルの種類、伝送プロトコルとは無関係に動作し、ファイルがローカルに既にキャッシュされていることを知るために一度サーバーにヒットしなくても動作するはずです。

私の質問はです:そのようなメカニズムはHTMLで利用できますか?

次の例は、アイデアをさらに明確にするためのものであり、新しい情報を追加するものではありません。 2つの無関係なページに含まれるライブラリの例は、以下の手順につながります。

  1. ユーザーは
  2. ブラウザのロードページA初めてのページAに移動し、外部ファイルを探します(イメージ、スクリプト、...)
  3. ブラウザがページAはハッシュb04a3bccd23ddeb7982143707a63ccf9
  4. とスクリプトが含まれて見つけますブラウザがそのキャッシュをチェックし、
  5. ブラウザは指定されたURLからファイルをダウンロードし、そのハッシュとはファイルが見つからない
  6. (ページAのドメイン上のファイルを提供します)ブラウザはハッシュを計算し、Aページに記載されているハッシュと比較します。
  7. ブラウザはハッシュを使用してキャッシュにファイルを追加します。 計算されたハッシュが指定されたハッシュと一致しない場合、ファイルはエラーメッセージで拒否されていました。
  8. ブラウザでファイルが実行されます。後のある時点で

  1. ユーザーが初めて
  2. ブラウザの負荷のページBのページBに移動し、外部ファイルを探します(イメージ、スクリプト、...)
  3. ブラウザはページBにハッシュを含むスクリプトが含まれていますb04a3bccd23ddeb7982143707a63ccf9
  4. ブラウザはキャッシュをチェックし、はそのハッシュを持つファイルを見つけます。
  5. ブラウザはキャッシュからファイルをロードします。 ブラウザはのURLを気にしませんでした。ファイルを指し示すページBに与えられたURL。また、ファイルの内容がどのようにキャッシュに入ったのかは関係ありませんでした。プロトコル、接続とソースの暗号化は無視されました。ページBのファイルをロードするサーバーへの接続がありません
  6. ブラウザはファイルを実行します。

答えて

0

基本的にはいいアイデアのカーネルですが、HTMLにはそれをサポートするものはないと思います。私はJavaScriptと一緒に何かをklugeすることができるかもしれないと思います。

0

全く新しいアイデアではありません。

これは、例を使用してattrを省略して行うことができます。 (簡潔にするために)「タイプ」:これはかなりの数のサイトに長い時間のためにMD5のファイルのタイムスタンプinstadを使用して実施されている

<script src="jQuery-1.5.1.min.js?b04a3bccd23ddeb7982143707a63ccf9"> 

、Railsはhereを参照してください、あまりにもそれをサポートしています(「タイムスタンプ」を探してください) PHPを使用した例はhereです。

はまた、あなたの答えのためのHow to set up caching for css/js static properly

+0

感謝を参照してください、しかしアドレスにファイルハッシュまたはリビジョン番号を追加すると、新しい要求につながります。問題は、ブラウザが**サーバにヒットする必要がない**を知るようにハッシュを提供することです。 2つのサイトが同じファイルjQueryを使用しているとしますが、お互いを知りません。ハッシュは、サイト2のコピー(またはそのHTTPヘッダー)を読み取るためにサーバーにぶつかることなく、サイト2のサイトのコピーのコンテンツを使用することが有効であることをブラウザーに通知する必要があります。 CDNを使用すると問題は緩和されますが、不要な依存関係が発生します。 –

関連する問題