instance method expires_in

Ruby on Rails 7.2.3

Since v3.0.20

Available in: v3.0.20 v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

expires_in(seconds, options = {})

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

Parameters

seconds req
options opt = {}
Source
# File actionpack/lib/action_controller/metal/conditional_get.rb, line 287
    def expires_in(seconds, options = {})
      response.cache_control.delete(:no_store)
      response.cache_control.merge!(
        max_age: seconds,
        public: options.delete(:public),
        must_revalidate: options.delete(:must_revalidate),
        stale_while_revalidate: options.delete(:stale_while_revalidate),
        stale_if_error: options.delete(:stale_if_error),
      )
      options.delete(:private)

      response.cache_control[:extras] = options.map { |k, v| "#{k}=#{v}" }
      response.date = Time.now unless response.date?
    end

Defined in actionpack/lib/action_controller/metal/conditional_get.rb line 287 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActionController::ConditionalGet

Type at least 2 characters to search.

↑↓ navigate · open · esc close