1

私はこれについてたくさん読んでいますが、それでも誤解はほとんどありません。

max-age は静的データのみに設定する必要があることを読みました。

私はこのリクエストを行うためにフィドラー作曲家を使用しました

User-Agent: Fiddler
Host: www.example.com

応答は:

HTTP/1.1 200 OK
Date: Tue, 01 Jan 2013 20:37:31 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Thu, 06 Dec 2012 19:40:14 GMT <======
...

Q#1

サーバーがヘッダーを送信する場合last-modified、ページが静的なものであるためですか?(誰かが設定max-ageしました)サーバー側で?

Q#2

クライアントがこの最初の応答を受け取った後、次にそれを尋ねるときはIf-Modified-Sinceヘッダー付きであり、サーバーは200または304(変更されていない)を返す可能性があります。 しかし、なぜ彼の最初の応答 でサーバーがまだ言及していなかったのmax-ageですか?クライアントが2番目のリクエストを送信するのを防ぐことができます!

Q#3

この条件付き取得は、ページ全体をダウンロードすることから私を救うと仮定しますが、それでも落胆 しているので、他にどのようなオプションがありますか?(静的データの場合)

Q#4

それが変更されたかどうかをどうやってiis知るのですか?変更されたファイルの日付を見て?IO日付チェックごとにアクセスを行っていると教えてくれますか?そうでない場合、その情報はどこに保存されますか?

Q#5

クライアントが最初の応答を受け取った後、もう一度ページが必要になります。で再度リクエストを送信しIf-Modified-Sinceますか?いいえの場合、この侵入中にページ変更された場合はどうなりますか?max-ageはいの場合-サーバーがヘッダーで応答したのはなぜですか?私はそれとは何の関係もありません。

4

1 に答える 1

2

Cache-Controlヘッダーのmax-age句を明示的に有効にする必要があります。これを行う正確な方法は、明らかにサーバーソフトウェアによって異なります。

Last-Modified:およびIf-Modified-Since:の相互作用は、これとは無関係です。これは、そのメカニズムがmax-ageよりずっと前に発明されたためです。

サーバーが動的に生成されることを(サーバー固有の手段によって)知らないサーバー側のリソースに対しては、常にLast-Modified:を取得します。Cache-Control:max-age = whateverが存在する場合は、クライアントまたはキャッシュが更新要求を保存できるようにします(If-Modified-Sinceを使用)。

ただし、この追加のヘッダーにはサーバー設定が必要です。「静的データ」の場合は自動的には発生しません。また、最終変更:「静的データ」を示しません。(サーバー側のハンドラープロセスが、クライアントに中継されるLast-Modifiedヘッダーを生成することは可能です。)

Q1:いいえ。サーバーはデータを動的として認識するように構成されていませんでした。max-ageはそれとは何の関係もありません。

Q2:max-ageが有効になっていないため。自動的には発生しません。

Q3:他の選択肢はありません。If-Modified-Sinceは、帯域幅を節約するように設計されています。

Q4:IISは、他のすべてのサーバーと同様に、max-ageを有効にするように構成する必要があります。当て推量は必要ありません。何かが変更されたかどうかを判断する場合、これには、クライアントからIf-Modified-Sinceヘッダーで送信された日付と、サーバーに格納されている日付情報との比較が含まれますファイル内の静的データの場合、これには通常、WindowsのGetFileAttributesEx()や他のプラットフォームのfstat()などのシステムコールが含まれます。

Q5:サーバーから以前に受信したCache-Control:max-ageの期限が切れる前に、クライアントが(If-Modified-Since :を使用して)更新要求を発行した場合、クライアントが壊れているか、外部でトリガーされた「強制更新/更新」オプション。(If-Modified-Sinceリクエストは、クライアントが以前のバージョンをまだキャッシュに保持していることを前提としていることに注意してください。そうでない場合は、日付がないという理由だけで、このヘッダーは送信されません!)

于 2013-01-01T23:31:46.663 に答える