HerokuのCedarスタックでキャッシュ
CedarスタックだとVarnishが動かないのでmemcachedにキャッシュするメモ。
Gemfile
rack-cacheとmemcachedクライアントのdalliを追加。
config.ru
rack-cacheを使う設定を追加。サーバのアドレスはMEMCACHE_SERVERSという環境変数で渡されるので、それを使います。ローカルで開発するときはMEMCACHE_SERVERSは存在しないので、かわりにファイルにキャッシュします。default_ttlは個別に指定しなかったときのキャッシュ時間です。
アプリ
アプリ側でCache-Controlヘッダを付けるとそれを参照してキャッシュしてくれます。以下はSinatraでの例です。
設定
memcacheのaddonを追加します。
動作確認
レスポンスのX-Rack-Cacheヘッダで動作を確認できます。miss, storeと表示されればキャッシュされており、freshであればキャッシュを返していることが分かります。