私のheroku Webサイトのルートページは基本的に静的で、生成時にビューにいくつかのルビーコードがありますが、単一のユーザーに固有のものは何もないため、Varnishによってキャッシュされ、dynoにヒットすることなく提供されるようにしたいと思います(注)アプリケーションに動的なページが他にあることを確認します)。
ここでは、Heroku を使用すると非常にシンプルに見えます。追加するだけ response.headers['Cache-Control'] = 'public, max-age=300'
で、再生成する前に 5 分間キャッシュされます。
これをテストするために、ページに日付 ( ) を変更して出力し、Time.now
5 分間同じままかどうかを確認しましたが、新しいブラウザーでページにアクセスするたびに更新されます。同じブラウザで更新しても問題なく動作しますが、これは Heroku ではなく、ブラウザのキャッシュが原因だと思います。
HTTPヘッダーを取得するためにcurl -iを実行すると、次のようになります。
HTTP/1.1 200 OK^M
Server: nginx/0.7.67^M
Date: Thu, 29 Dec 2011 02:03:33 GMT^M
Content-Type: text/html; charset=utf-8^M
Connection: keep-alive^M
Cache-Control: public, max-age=300^M
X-Ua-Compatible: IE=Edge^M
Etag: "8a1b58f048968803980417a2914764d0"^M
X-Runtime: 0.038393^M
Content-Length: 8310^M
X-Varnish: 1040651825^M
Age: 0^M
Via: 1.1 varnish^M
基本的に、一度生成されてから Varnish にキャッシュされていることを確認したいのですが、オプションが不足していませんか? さらに設定する必要がありますか? 高速な静的ページを提供するための提案が他にあれば、それも歓迎します。
ありがとう!