expires_in
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (-2)
- 3.1.0 (1)
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (5)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (38)
- 6.1.3.1 (31)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (37)
- 7.1.3.4 (0)
- What's this?
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
be aware that this writes to tmp/cache
Its supposed to be http caching, but Rails will actually cache the response to whatever you specified as the cache store, *as well*, but only if you specify :public => true. The default is filestore so it will try to write to tmp/cache.
Only a problem if you don’t have the proper permissions set, in that scenario your apache/nginx logs could fill up very quickly with “permission denied errors”
Full explanation is here http://blog.tonycode.com/archives/418
This doesn't write files
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.