rails4+apache(passenger)でpage cacheがうまく動作しない→httd.conf設定追加

取り急ぎなんとか動いたぞメモ。

rails4 4.0.1.rc2+apache passengerでpage cacheがうまく動作しない。
weblickんときは動いてたやん…(TдT)

rails4からはpage&action cacheはgemで追加。Gemfileに

gem 'actionpack-action_caching'
gem 'actionpack-page_caching'

と書いて

$ bundle

キャッシュの格納場所はconfig/environments/production.rbとかに設定。

config.action_controller.perform_caching = true

config.action_controller.page_cache_directory = "#Rails.root.to_s}/public/cache"

そしてcontrollerに caches_page :indexとか書く。
うまくキャッシュされるけど
2回目以降のリクエストも毎回キャッシュを生成しおる…
キャッシュの意味ないじゃんΣ(ΦωΦ)



検索しまくったらapachemod_rewriteまわりいじるとうまく動作するっぽい。

http://www.alfajango.com/blog/make-sure-your-rails-application-is-actually-caching-and-not-just-pretending/

/etc/httpd/conf/httd.confに以下を追加


...
#RailsAllowModRewrite On # ←再起動時にいらない言われた
RewriteEngine On

RewriteCond %{THE_REQUEST} ^(GET|HEAD)
RewriteCond %{REQUEST_URI} ^/([^.]+)$
RewriteCond %{DOCUMENT_ROOT}/cache/%1.html -f
RewriteRule ^/[^.]+$ /cache/%1.html [QSA,L]

RewriteCond %{THE_REQUEST} ^(GET|HEAD)
RewriteCond %{DOCUMENT_ROOT}/cache/index.html -f
RewriteRule ^/$ /cache/index.html [QSA,L]

apacherails再起動すると動作してくれた。