ウェブ

  
のキャッシュサーバの詳細な分析

のCache-Control、のLast-Modified、ETagのは、RFC 2616(HTTP /1.1)といくつかの分野でのWebキャッシュ・コヒーレンシ・プロトコルです。最初の2つはキャッシュの有効期限を制御するために使用され、最後の2つはWebページの有効性を検証するために使用されます。 HTTP /1.0はより弱いキャッシュ制御メカニズムを持っていることに注意すべきです:プラグマはExpiresとCache-Controlヘッダを無視するためにHTTP /1.0キャッシュを使います。例としてApache2.0サーバーを取り上げますが、HTTP /1.1プロトコルについてのみ説明します。

有効期限

は、WebページやURLアドレスのフィールド宣言は、一度この時間をかけて、ブラウザの時間をキャッシュされません有効期限、ブラウザが元のサーバーに連絡してください。 RFCは、私たちに語った:'ためには、有効期限を推測するために、意味の透明性を減らすことができる注意して使用する必要があり、私たちは可能な限り障害のために正確な時間を提供するために、オリジンサーバを奨励します。 &Rdquo;
は、

は、HTML、GIF、JPG、CSS、JS、Apacheサーバは、デフォルトでインストールされた一般的純粋に静的なページの場合、フィールドは、レスポンスヘッダに付加されていません。対応するFirefoxブラウザを受け取った後、見つかった場合は、noは、ファイルブラウザと&'の種類に応じて、フィールドを有効期限;のLast-Modified'フィールドには、失敗に適切な時間を推測するために、クライアントに保存されています。推定所要時間は、通常、応答時間を受け取ってから約3日です。

Apacheのexpires_moduleモジュールは自動的にExpiresフィールドをHttpレスポンスヘッダに追加することができます。 Apacheのhttpd.confファイルを次のように

#expires_moduleモジュールのLoadModule expires_moduleモジュールを有効/mod_expires.so ##のGIFに有効な制御ExpiresActiveは、1ヶ月のExpiresByTypeディレクティブの画像に対して有効である有効/GIF A2592000#HTMLドキュメント最終更新時間後の1週間ExpiresByTypeディレクティブテキストの有効/htmlのM604800#以下の意味似たExpiresByTypeディレクティブテキスト/cssの'今プラス2ヶ月' ExpiresByTypeディレクティブテキスト/JS'今プラス2日' ExpiresByTypeディレクティブ画像/JPEG'アクセスプラス2ヶ月' ExpiresByTypeディレクティブ画像/BMP'アクセスプラス2ヶ月' ExpiresByTypeディレクティブ画像/X-アイコン'アクセスプラス2ヶ月' ExpiresByTypeディレクティブ画像/PNG形式'アクセスプラス2ヶ月'

動的なページのために、もし内部ページがない必須のプラスは、ヘッダとして、関数により有効期限である(;有効期限&':' gmdate(&'を、D、DのMYH :. I :. S')' GMT')1984、Apacheサーバであろう水、1月11日05:00:00 GMTはExpiresフィールドの内容としてブラウザに返されます。つまり、動的ページは常に無効です。ブラウザはまだ期限切れの動的ページを保存します。

Firefoxブラウザは、無効化、無効化、有効期限にかかわらず、常にすべてのページをキャッシュします。キャッシュは、Webページの効力発生日は1970年1月1日午前8時00分〇​​〇秒で宣言した場合でも、ブラウザは、まだキャッシュに-最終更新やETagのフィールドファイルを送信します。サーバー側がパスを検証して304状態に戻った場合でも、ブラウザーはこのキャッシュを使用します。

のCache-Control

のCache-Controlフィールド、これらの要素は、例えば、ノーキャッシュを複数宣言していないことがあり、再検証する必要があり、最大エージング= 0などが挙げられます。これらの要素は、ページがキャッシュされる期間、キャッシュされる方法、ページが別のメディアに変換される方法、および永続メディアに格納される方法を示すために使用されます。ただし、Cache-Controlディレクティブでプライバシーやデータセキュリティを保証することはできません。 &Ldquoに、プライベート'と'無店舗'命令はプライバシーと安全のためにいくつかの助けを提供することができますが、彼らは認証と暗号化のために代用することはできません。

Apacheモジュールは、制御ヘッドにファイルレベルmod_cern_meta HTTP応答できるように、それはまた、キャッシュ制御ヘッダ(または任意の他のヘッダ)を構成することができます。応答ヘッダーファイルは、元のファイルの名前にちなんで、元のディレクトリのサブディレクトリに配置されるファイルです。具体的な使用方法については、Apacheの公式Webサイトを参照してください。

Cache-Control:max-ageは有効期限を表します。 mod_cern_metaモジュールが開始されていない場合、ApacheサーバーはExpiresフィールドの日付を秒単位のデルタ値に変換し、それをmax-ageに割り当てます。 mod_cern_metaモジュールを起動してmax-age値を設定すると、ApacheはこのExpiresフィールドを上書きします。同時に、max-ageはCanche-Control:publicを意味します。このようにして、ブラウザはCache-Controlを受け入れます。max-ageとExpiresの値は同じです。

有効期限がCache-Control:max-ag = 0または負の場合、ブラウザは対応するキャッシュでExpiresを1970-01-01 08:00:00に設定します。

Last-Modified

Last-ModifiedとETagは、条件付きリクエストに関連する2つのフィールドです。そして'のETag'もし変更するので'ヘッドキャッシュはページの要求を受信した場合、そのページは、HTTPヘッダ&'にもたらすために変更された場合、認証要求をサーバに要求し送信します。サーバー、それはHTTP 304(変更しないで)返していない場合は、更新情報があるかどうかを判断するための情報によると、ETagの'と'更新、200ページのコンテンツHTTPおよび更新は、新しい&'を運ぶ場合は最終更新-' 。

このメカニズムを使用すると、ファイルをブラウザに繰り返し送信しなくてもHTTPリクエストを生成できます。

一般的に、純粋に静的なページはLast-Modified情報を持っていますApacheサーバーはページファイルのLast-Modified情報を読み、それをhttpレスポンスヘッダに追加します。

動的ページについて、ページ内の機能力を渡すプラス最終変性していない場合、例えばヘッダ('最終修飾:' gmdate(' D、DのMYH :. I:S') ' GMT')、ApacheサーバーはブラウザにLast-Modifiedとして現在の時刻を返します。

純粋な静的ページでも動的ページでも、Firefoxブラウザはhttp応答ヘッダーのLast-Modifiedフィールドに従うのではなく、サーバーからの応答を受信したときにキャッシュページのLast-Modifiedを巧妙に設定します。

ETag

これでLast-Modifiedができました。なぜETagフィールドを使うのですか。 1秒以内にファイルに2つの変更を加えた場合、Last-Modifiedは正しくありません。したがって、HTTP /1.1はEntity Tagヘッダーを使ったより厳密な認証を提供します。

デフォルトでは、Apacheサーバーはすべての静的ファイルと動的ファイルの応答ヘッダーにETagフィールドを追加します。

このオプションは、Apacheのhttpd.confファイルでFileETagディレクティブを介して設定できます。 FileETagディレクティブは、ドキュメントがファイルに基づいているときにEtag(エンティティタグ)応答ヘッダーを作成するために使用されるファイルのプロパティを設定します。 Apache 1.3.22以前では、ETagの値は、ファイルのインデックスセクション(INode)、サイズ(Size)、および最終更新時刻(MTime)をハッシュすることによって取得されました。ディレクトリの設定に「FileETag INode MTime Size」が含まれ、サブディレクトリに「FileETag -INode」ファイルが含まれている場合(このサブディレクトリの設定はカバーされていないサブディレクトリに継承されます)価格はFileETag MTime Sizeです。

マルチロードバランスサーバー環境では、同じファイルのetagまたはファイルの変更日が異なるため、ブラウザは毎回再ダウンロードします。 ‘ FileETag None’と設定すると、レスポンスヘッダーにETagフィールドが含まれなくなります。

Copyright © Windowsの知識 All Rights Reserved