cache-control

Google App EngineでCache-controlヘッダーを使うと、インスタンスの使用率を劇的に改善することが可能です。
ただし、Paidサービスでしか利用できません。Billingを有効にしてない無料版では使えません。

画像は、無料版でstaticにアクセスしたものが、有料版になってcacheが有効になった模様が描かれています。

使い方

出力のヘッダーにCache-Controlを追加します。
resp.setHeader("Cache-Control", "public, max-age="+age); //ageは秒指定

すると指定した秒数の間、このキャッシュしたコンテンツをキャッシュサーバーが返します。

キャッシュ時間を長めに設定すれば、表示に関しては1つのインスタンスだけで、いくらでもこなせるようになるでしょう。
次は、転送量のコストを心配する段階になります。

静的なコンテンツなら、Google Cloud Storageのベータ段階が終われば、これと組み合わせれば料金コントロール可能な静的コンテンツを楽に運用できそうです。

注意点

デプロイ直後は不安定 これに限らず、何もかも不安定ですが
ageの最大は、365日の31536000以内にした方がいいらしい。

Cached Requestはグラフに出ますのでテストで確認してみましょう。


コンテンツの確認方法
実際にアクセスして確認します。

クロムのコンソール開いて、ネットワークに切り替えて、ページを開くと、読み込んだコンテンツの一覧が出ます。

それで、Name/pathの所をクリックして開くと、ヘッダーとかが表示されます。


レスポンスヘッダーの中の Cache-Controlというのが、キャッシュです。
ここの max-ageが指定通り出ていれば、キャッシュの指定がうまくいっています。

画像では出ていませんが、
Age: というヘッダーがあって、これが、作成されてからの時間を表します。
これが、あればキャッシュが機能しています。当然、無償版のGAEではキャッシュは作成されません。

あと
 appengine-web.xml の<static-files>中に指定した、expirationもcache-controlヘッダーになっています。
max-ageの数字が合わないときは、こちらの指定も確認しましょう。





Comments