method

expires_in

rails latest stable - Class: ActionController::ConditionalGet
expires_in(seconds, options = {})
public

Sets the Cache-Control header, overwriting existing directives. This method will also ensure an HTTP Date header for client compatibility.

Defaults to issuing the private directive, so that intermediate caches must not cache the response.

Options

:public

If true, replaces the default private directive with the public directive.

:must_revalidate

If true, adds the must-revalidate directive.

:stale_while_revalidate

Sets the value of the stale-while-revalidate directive.

:stale_if_error

Sets the value of the stale-if-error directive.

Any additional key-value pairs are concatenated as directives. For a list of supported Cache-Control directives, see the article on MDN.

Examples

expires_in 10.minutes
# => Cache-Control: max-age=600, private

expires_in 10.minutes, public: true
# => Cache-Control: max-age=600, public

expires_in 10.minutes, public: true, must_revalidate: true
# => Cache-Control: max-age=600, public, must-revalidate

expires_in 1.hour, stale_while_revalidate: 60.seconds
# => Cache-Control: max-age=3600, private, stale-while-revalidate=60

expires_in 1.hour, stale_if_error: 5.minutes
# => Cache-Control: max-age=3600, private, stale-if-error=300

expires_in 1.hour, public: true, "s-maxage": 3.hours, "no-transform": true
# => Cache-Control: max-age=3600, public, s-maxage=10800, no-transform=true

1Note

This doesn't write files

reconbot ยท May 8, 2015

This doesn't write files, at least not anymore. Since at least rails 4 Rack::Cache isn't included by default. In any case this method only ever set headers on the response.