8

Google アプリ エンジンでページの提供時間を最適化しようとしていますが、必要な効果が得られずに苦労しています。

私の app.yaml では、次のディレクティブを使用しました。

handlers:
- url: /assets
  static_dir: assets
  expiration: 7d

アセット フォルダーの下に、すべての画像、css、および js があります。7 日間の有効期限を使用することで、ブラウザーがローカルにキャッシュされたファイルを使用し、7 日間アプリにアクセスしないことを期待していました。

ただし、アセットの応答ヘッダーには次のように表示されます。

Cache-Control:public, max-age=604800
Cache-Control:no-cache, must-revalidate

これらのヘッダーを使用すると、キャッシュされたバージョンをリリースする前に、ファイルが変更されたかどうかをブラウザーがアプリで確認することを理解しています。(更新と単純なページ読み込みの両方で、アセット フォルダーの下のファイルに対応する 304 の束を効果的に確認できます)。

有効期限で指定されているように、Google アプリ エンジンでキャッシュ動作を構成して、ブラウザーが 7d (単純なページの読み込み) でこれらのファイルを返さないようにする方法はありますか? (つまり、キャッシュ制御ヘッダーから「no-cache」を削除します)

PS アプリで PageSpeed を有効にしたくありません。提供される html を完全に制御したい。

4

3 に答える 3

6

もしかして、管理者アカウントでログオンしていませんか? AppEngine は、管理者のコストに関するいくつかのプライベート ヘッダーを追加し、データが非公開であるためキャッシュを無効にします。ログアウトすると問題が解決しました。

于 2013-08-21T15:03:29.170 に答える
0

ブラウザーでページを読み込む方法は、ここで関連する場合があります。

  • Ctrl キーを押して更新ボタンを使用してページをリロードすると、リソースが無条件にリロードされ、200 が返されます。
  • 更新ボタン (または F5 などの同等のキー) を使用して再読み込みすると、条件付き要求が送信され、静的リソースに対して 304 が返されます。
  • アドレス ボックスで Enter キーを押すか、ページをブックマークに追加してそこから読み込むか、ハイパーリンクからページにアクセスすると、キャッシュの max-age が期待どおりに機能するはずです。
于 2014-10-04T20:59:55.307 に答える
0

私は有効期限ディレクティブを使用しなかったため、GAE はデフォルトのキャッシュ設定として以下を送信します。

キャッシュ コントロール: パブリック、最大年齢 = 600

有効期限: 7d を削除してみて、GAE が 1 つの Cache-Control ヘッダーのみを送信するかどうかを確認できますか?

于 2013-06-18T08:38:34.827 に答える