method

expires_in

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.

`:immutable` : If true, adds the `immutable` directive.

Any additional key-value pairs are concatenated as directives. For a list of supported `Cache-Control` directives, see the [article on MDN](developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control).

#### 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.