Method: ActionController::ConditionalGet#expires_in
- Defined in:
- actionpack/lib/action_controller/metal/conditional_get.rb
#expires_in(seconds, options = {}) ⇒ Object
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
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 |
# File 'actionpack/lib/action_controller/metal/conditional_get.rb', line 290 def expires_in(seconds, = {}) response.cache_control.delete(:no_store) response.cache_control.merge!( max_age: seconds, public: .delete(:public), must_revalidate: .delete(:must_revalidate), stale_while_revalidate: .delete(:stale_while_revalidate), stale_if_error: .delete(:stale_if_error), immutable: .delete(:immutable), ) .delete(:private) response.cache_control[:extras] = .map { |k, v| "#{k}=#{v}" } response.date = Time.now unless response.date? end |