6

この質問は些細なことですが、WebGoogleアプリエンジンのJavaサーバーでブラウザーキャッシュを有効にすることはできませんでした。

私はこの種のものを私のappengine-web.xmlに入れようとしました:

<static-files>
  <include path="/**.cache.**" expiration="365d" />
...

しかし、応答ヘッダーを見ると、ローカルでこれを見つけます。

Content-Length: 196084
Cache-Control: public, max-age=31536000
Expires: Fri, 10 Jan 2014 19:40:45 GMT
Content-Type: image/png
Last-Modified: Tue, 18 Dec 2012 21:41:22 GMT
Server: Jetty(6.1.x)

これは問題ありません...しかし、これは本番環境では:

HTTP/1.1 304 Not Modified
ETag: "RV4Bpg"
X-AppEngine-Estimated-CPM-US-Dollars: $0.000000
X-AppEngine-Resource-Usage: ms=109 cpu_ms=0
Date: Thu, 10 Jan 2013 19:41:20 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, must-revalidate
Server: Google Frontend

これは間違いなく私が望むものではありません:(

何か案が ?私が逃した何か?

[編集] まだダウンロードされていないコンテンツの場合、ブラウザは次のヘッダーを受け取ります。

HTTP/1.1 200 OK
ETag: "RV4Bpg"
Date: Fri, 11 Jan 2013 12:50:50 GMT
Expires: Sat, 11 Jan 2014 12:50:50 GMT
Cache-Control: public, max-age=31536000
X-AppEngine-Estimated-CPM-US-Dollars: $0.000000
X-AppEngine-Resource-Usage: ms=3 cpu_ms=0
Date: Fri, 11 Jan 2013 12:50:50 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, must-revalidate
Content-Type: image/png
Server: Google Frontend
Content-Length: 196084
Proxy-Connection: Keep-Alive
Connection: Keep-Alive
X-RBT-Optimized-By: eu-dcc-sh02 (RiOS 6.5.5b) SC

ETagといくつかの矛盾する「Expires」と「Cache-Control」...キャッシングポリシーを構成する方法はいくつかありますか?それは私のISPから来たのでしょうか?またはプロキシ?

4

2 に答える 2

9

管理者としてGoogleAppEngineアプリケーションにログインしている場合:

  1. 質問に示されているX-AppEngine-*ヘッダーが含まれています。
  2. ヘッダーはプライベートであり、キャッシュしてはならないため、ヘッダーCache-Control: no-cache, must-revalidateが含まれています。X-AppEngine-*

これは、 https://developers.google.com/appengine/docs/python/runtime#ResponsesのResponsesセクションの最後に隠されています。

リソース使用統計を含む応答は、キャッシュできなくなります。

于 2013-02-10T01:18:10.207 に答える
2

はい、Cache-Control応答が HTTP 304 であるためオフです。

問題は、ブラウザーが ETag を保存したことです: http://en.wikipedia.org/wiki/HTTP_ETag

同じ URL/コンテンツに対するすべてのリクエストに対して、ブラウザーは ETag と GAE 応答に HTTP 304 Not Modified を提供します。

この URL のリソース (画像) を変更するか、このブラウザにまだ読み込まれていない別の URL を確認するか、別のブラウザまたはコンピュータを使用してみてください。

また、これは関連しています:何が優先されますか: ETag または Last-Modified HTTP ヘッダー?

于 2013-01-10T21:57:08.260 に答える