Rails >= 3 comes with HTTP caching abilities out of the box. This uses the Cache-Control
and ETag
headers to control how long a client or intermediary (such as a CDN) can cache a page.
In a controller action, use expires_in
to set the length of caching for that action:
def show
@user = User.find params[:id]
expires_in 30.minutes, :public => true
end
Use expires_now
to force immediate expiration of a cached resource on any visiting client or intermediary:
def show
@users = User.find params[:id]
expires_now if params[:id] == 1
end