web cache機構(cache-control)
2102 ワード
cacheとは何ですか
cacheはキャッシュであるべきです.キャッシュは私たちのサイトのアプリケーションの性能を高めることができます.これは間違いないです.HTTPプロトコルはどのようにCACHEメカニズムをサポートしますか?
私たちは一緒に探してみます.
まずhttpプロトコルの頭の中の原文(w 3 c cache)です.
この説明は大体次のようにまとめられています.
クライアントがhttp要求にアクセスする時、まずクライアントキャッシュにこのイベントがあるかどうかを確認します.ある場合、その利用可能性を確認します.有効であれば、直接クライアントに戻ります.cacheにはこのイベントがない場合、サービスをお願いします.
HTTPプロトコルはどのようにしてこの流れを保証しますか?
cache-controlというhttp headerが見られます.cache-controlはhttp/1.1の内容で、http/1.0のpragmaに対応しています.
cache-controlのよく使う属性はありますか?
max-ageとno-cache
具体的な書き方は以下の通りです.
<META HTTP-EQUIV=「Cache-Coontrol」CONTENT=「max-age=0」/>
最初の行:いつまでも有効期限が切れています.要求するたびにサーバーと対話しなければなりません.max-ageの単位は秒です.
第二行:クライアントはcacheしない
PS max-ageの優先度はhttpのexpiresヘッダの優先度より高いということは、max-ageがexpiresヘッダをカバーする失効時間を設定しているということである.サービス端末のcache-controlとexpiresが設定されていない場合、httpプロトコルによりクライアントは自動的に期限切れ時間を計算します.
クライアントがhttp要求を開始すると、クライアントはこのキャッシュの存在を確認し、有効であると、キャッシュの内容に直接戻る.キャッシュが有効かどうかをどう判定しますか?
検証のルールは多くあり得るが、既存の一般的なチェックフィールドは last-modified ETag(entity) IF-MOODIFIED-SINCE IF-UNMODIFIED-INCE 検証は、強いチェックサムと弱いチェックサムに分類されます.
検証とは、エンティティ(要求の対象)が変更されたとき、関連する検証器も変更されることを意味する.でなければ弱検査と呼びます.
私たちはEdeを例に挙げます.
クライアントが要求を送信すると、要求の先頭にはETag=1というフィールドがあり、この要求を受付けた時点で、このETagは1となり、サービングエンドとローカルのこの要求エンティティのETagと比較し、同じ場合は304に戻り、さもなくば新しいエンティティに戻る.
これはすべての検証プロセスです.
この原則を知っています.応用をする時は以下の2点に注意します. cacheはcacheの資源を全部持っています.cacheはどれぐらいかかりますか? .cacheしません. このように別の問題があります.要求時に体が変わると、クライアントはリアルタイムで更新できません.
だから私の解決策は以下の通りです.は、すべての静的リソースにcacheを加え、バージョン番号を添付し、ウェブサーバはcacheの失効時間を永久に設定する. 所有のhtmlはcacheではありません.
cacheはキャッシュであるべきです.キャッシュは私たちのサイトのアプリケーションの性能を高めることができます.これは間違いないです.HTTPプロトコルはどのようにCACHEメカニズムをサポートしますか?
私たちは一緒に探してみます.
まずhttpプロトコルの頭の中の原文(w 3 c cache)です.
この説明は大体次のようにまとめられています.
クライアントがhttp要求にアクセスする時、まずクライアントキャッシュにこのイベントがあるかどうかを確認します.ある場合、その利用可能性を確認します.有効であれば、直接クライアントに戻ります.cacheにはこのイベントがない場合、サービスをお願いします.
HTTPプロトコルはどのようにしてこの流れを保証しますか?
cache-controlというhttp headerが見られます.cache-controlはhttp/1.1の内容で、http/1.0のpragmaに対応しています.
cache-controlのよく使う属性はありますか?
max-ageとno-cache
具体的な書き方は以下の通りです.
<META HTTP-EQUIV=「Cache-Coontrol」CONTENT=「max-age=0」/>
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache" />
上記のコードの意味は:最初の行:いつまでも有効期限が切れています.要求するたびにサーバーと対話しなければなりません.max-ageの単位は秒です.
第二行:クライアントはcacheしない
PS max-ageの優先度はhttpのexpiresヘッダの優先度より高いということは、max-ageがexpiresヘッダをカバーする失効時間を設定しているということである.サービス端末のcache-controlとexpiresが設定されていない場合、httpプロトコルによりクライアントは自動的に期限切れ時間を計算します.
クライアントがhttp要求を開始すると、クライアントはこのキャッシュの存在を確認し、有効であると、キャッシュの内容に直接戻る.キャッシュが有効かどうかをどう判定しますか?
検証のルールは多くあり得るが、既存の一般的なチェックフィールドは
検証とは、エンティティ(要求の対象)が変更されたとき、関連する検証器も変更されることを意味する.でなければ弱検査と呼びます.
私たちはEdeを例に挙げます.
クライアントが要求を送信すると、要求の先頭にはETag=1というフィールドがあり、この要求を受付けた時点で、このETagは1となり、サービングエンドとローカルのこの要求エンティティのETagと比較し、同じ場合は304に戻り、さもなくば新しいエンティティに戻る.
これはすべての検証プロセスです.
この原則を知っています.応用をする時は以下の2点に注意します.
だから私の解決策は以下の通りです.
<script type="text/javascript" src="a.js?v=1" ></script>