0

OK、開発サーバーの IIS6 で有効期限ヘッダーをいじっていますが、よくわかりません!

したがって、expires ヘッダーをファイルに追加しない場合、firebug で表示すると、次の要求/応答が得られます。

Accept  */*
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Cache-Control   no-cache
Connection  keep-alive
Cookie  __utma=222382046.267771103.1330592028.1337002926.1340787333.122; __utmz=222382046.1330592028.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=76038230.629470783.1340728034.1340728034.1340786921.2; __utmz=76038230.1340728034.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); timeOutCookie=Wed%20Jun%2027%202012%2011%3A17%3A22%20GMT+0100%20%28GMT%20Daylight%20Time%29; __utmb=76038230.26.10.1340786921; __utmb=222382046.5.10.1340787333; ASP.NET_SessionId=yhib5kyxf1m5azuhoogrstt5; __utmc=76038230; Travel2=ECC62DC4F9C36A41F3BCF0C54F96D877FEA32D4867DB1A3A97D0C6A3BE79EE98517B9B1A4E24289C863D86A2A4A846EA1FF4BF3822E8B6CBF872E25DD1ADF306F724EE1500AA71E28CFCD02476748163929B73856C505E50D185C05E6322488F
Host    site
Pragma  no-cache
Referer http://site/Agents/Flights/FlightSearch.aspx?

応答:

Accept-Ranges   bytes
Content-Length  17864
Content-Type    application/x-javascript
Date    Wed, 27 Jun 2012 09:21:07 GMT
Etag    "0de7d7f192dcd1:a07d"
Last-Modified   Tue, 08 May 2012 12:53:00 GMT
Server  Microsoft-IIS/6.0
X-Powered-By    ASP.NET

ここで f5 キーを押すと、システムがクライアント キャッシュからファイルを取得します。

ここで、expires ヘッダーを追加して ctrl f5 を押すと、わずかに異なる要求/応答が得られます。

Accept  */*
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Cache-Control   no-cache
Connection  keep-alive
Cookie  __utma=222382046.267771103.1330592028.1337002926.1340787333.122; __utmz=222382046.1330592028.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=76038230.629470783.1340728034.1340728034.1340786921.2; __utmz=76038230.1340728034.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); timeOutCookie=Wed%20Jun%2027%202012%2011%3A21%3A11%20GMT+0100%20%28GMT%20Daylight%20Time%29; __utmb=76038230.27.10.1340786921; __utmb=222382046.5.10.1340787333; ASP.NET_SessionId=yhib5kyxf1m5azuhoogrstt5; __utmc=76038230; Travel2=ECC62DC4F9C36A41F3BCF0C54F96D877FEA32D4867DB1A3A97D0C6A3BE79EE98517B9B1A4E24289C863D86A2A4A846EA1FF4BF3822E8B6CBF872E25DD1ADF306F724EE1500AA71E28CFCD02476748163929B73856C505E50D185C05E6322488F
Host    site
Pragma  no-cache
Referer http://site/Agents/Flights/FlightSearch.aspx?
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1

応答:

Accept-Ranges   bytes
Cache-Control   max-age=86400
Content-Length  17864
Content-Type    application/x-javascript
Date    Wed, 27 Jun 2012 09:24:41 GMT
Etag    "0de7d7f192dcd1:a082"
Last-Modified   Tue, 08 May 2012 12:53:00 GMT
Server  Microsoft-IIS/6.0
X-Powered-By    ASP.NET

すばらしい キャッシュ コントロールで最大経過時間を取得しました。今私を混乱させているのは、私が知る限り、ダウンロードに関してサイトのパフォーマンスに実際的な違いがあるということです. f5 を押すとキャッシュから取得し、コントロール f5 を押すと HTTP 200 でサーバーから取得します。

では、これによってどのようにパフォーマンスが向上するのでしょうか? http 200 の代わりに HTTP 304 を取得するにはどうすればよいですか? これが実際に何をアーカイブしているのかわかりませんか?

どんな助けでもいいでしょうありがとう

4

2 に答える 2

1

設定Expiresまたはmax-age明示的に設定すると、応答をその時間キャッシュしても安全であることがクライアントに通知されます。クライアントはキャッシュからそれを喜んで取得し、サーバーにアクセスせず、304はありませ。Ctrl+ F5を実行しない限り、ブラウザーは新たに完全な要求を実行し、結果として200になります。

設定しないとどうなりますExpiresmax-age?これは、クライアントがヒューリスティックに、それ自体で有効期限を選択することを意味します。あなたの応答はまだキャッシュされており、ブラウザだけがどれくらいの時間を推測する必要があります。

したがって、Expires/max-ageは2つの場合に役立ちます。

  • ブラウザが推測するよりも長い特定の期間のキャッシュを推奨する場合。これは、バージョン管理された静的コンテンツで行われることが多く、変更されることはないため、有効期限は年単位で設定されます。
  • キャッシュを防止したい場合は、過去に設定Cache-Control: no-cacheしますExpires(IEの一部のバージョンは無視しno-cacheます)。

条件付きリクエスト304などは、コンテンツの有効期限が切れた後にのみ再生されます。それを再検証するために、クライアントは条件付きを実行する場合がありますGET。これは、サーバーの設定に応じて、304になる場合とならない場合があります。

于 2012-06-27T11:26:58.207 に答える
0

パフォーマンスの向上は、HTTPリクエストの数を減らすことで実現します。ブラウザがページを解析していて、CSSファイルをリクエストする必要があることを確認した場合、そのコピーがすでにキャッシュにある場合max-age=31536000は、ファイルのキャッシュされたコピーが1年間有効であり、その必要はありません。ファイルをフェッチするためのHTTPリクエストを作成します。

サーバーへのラウンドトリップが少ないほど、ページの読み込みが速くなり、ユーザーのエクスペリエンスが向上します。

于 2012-06-27T11:27:07.677 に答える