コンテンツがキャッシュされた後、サーバーへのすべてのリクエストを完全に停止するには、どのヘッダーを送信する必要がありますか?
非常に待ち時間の長いサーバー(Sigh、VMWare)があるためHEAD
、サーバーへの要求の送信でも+ 40msかかります。
現在、これらは送受信されるヘッダーです。
最初のリクエスト
クライアントが送信します。
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Pragma: no-cache, no-cache, no-cache
Cache-Control: no-cache, no-cache, no-cache
サーバーが応答します。
HTTP/1.1 200 OK
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:51:51 GMT
Content-Type: text/plain
Vary: Accept-Encoding
Last-Modified: Tue, 31 Jan 2012 10:45:11 GMT
Content-Length: 14
Expires: Thu, 31 Jan 2013 14:51:51 GMT
Cache-Control: max-age=31536000
だから、送信Cache-Control
してExpires
将来的には365日にヘッダセットを。残念ながら、2回目の更新では、If-Modified-Since
ヘッダーを使用してオブジェクトを再度要求します。
第二の要求
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
If-Modified-Since: Tue, 31 Jan 2012 10:45:11 GMT
Cache-Control: max-age=0
応答;
HTTP/1.1 304 Not Modified
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:58:00 GMT
Vary: Accept-Encoding
Expires: Thu, 31 Jan 2013 14:58:00 GMT
Cache-Control: max-age=31536000
残念ながら、愚かな古いプロキシソフトウェアKeep-Alive
のため、アプリケーションの前に他のサーバー/ プロキシを使用することはできません。また、サーバーのパフォーマンスを向上させたり、ネットワークの待ち時間を短縮することもできません。301リクエストを取り除くために送信できるヘッダーを把握しようとしています。ETagsを使用してみましたが、違いはありませんIf-modified-since
。ヘッダーを送信します。また、Last-Modified
ヘッダーを削除しようとしましたが、キャッシュなしで標準のGETリクエストが発生するだけです(ログを確認し、サーバーはまだリクエストを受信しています)。
クライアントは、Firefox(大部分)、IE 7、8、および(一部)9、Chrome、Safariが混在していますが、この動作はテストされたすべてのブラウザーで発生するようです。
TL; DR;
ひどいネットワーク、サーバーにリクエストを送信してキャッシュを検証し、ヘッダーが満たされるまでコンテンツをキャッシュし続けることをクライアントに伝えるために、どのヘッダーを送信する必要If-modified-since
がありますExpires
か?
私はおそらく明らかな何かを見逃していますが、私が試みることはすべて同じ結果をもたらすようです。
アプリケーションサーバーの前にNGINXサーバーが配置されているため、必要に応じてヘッダーを追加/削除できます。私たちのプロキシはキープアライブをサポートしておらず、彼らのネットワークのパフォーマンスを向上させる方法はありません。ひどいソフトウェア設計により、Webアプリは、ページごとに+100のリソースをロードします(ええ、エンタープライズソフトウェアは最悪です)。
text/plain
どうですか?