🐈
Cache-Control: public にする
Railsアプリケーションで、特定のページのみCDNやブラウザにキャッシュさせたい場合、Cache-Control: public
ヘッダーの付与と、応答に Session Cookie が含まれないようにします。
サンプルコード
app/controllers/concerns/enable_cache.rb
module EnableCacheControlPublic
extend ActiveSupport::Concern
included do
before_action -> do
# このリクエストはSessionを使わないし、応答にも含めない
request.session.clear
request.session_options[:skip] = true
# Cache-Control: max-age=3600, public
expires_in 1.hour, public: true
end
end
end
app/controllers/posts_controller.rb
class PostsController < ApplicationController
include EnableCacheControlPublic
def show
@post = Post.find(params[:id])
end
end
このようにすることで安全にキャッシュさせることができます。
参考
Discussion