instance method
expires_in
Ruby on Rails 8.0.4
Since v3.0.20Signature
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
privatedirective with thepublicdirective. :must_revalidate-
If true, adds the
must-revalidatedirective. :stale_while_revalidate-
Sets the value of the
stale-while-revalidatedirective. :stale_if_error-
Sets the value of the
stale-if-errordirective. :immutable-
If true, adds the
immutabledirective.
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
-
secondsreq -
optionsopt = {}
Source
# File actionpack/lib/action_controller/metal/conditional_get.rb, line 290
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),
immutable: options.delete(:immutable),
)
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 290
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionController::ConditionalGet