aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/metal/conditional_get.rb
diff options
context:
space:
mode:
authorDaniel Schierbeck <daniel.schierbeck@gmail.com>2018-06-13 18:08:24 +0200
committerDaniel Schierbeck <daniel.schierbeck@gmail.com>2018-06-13 18:08:24 +0200
commitc94a00757dac150b17d9272b72288217c66f0a2d (patch)
tree0bfa3b0006b07f87f1892ded8663fe04bd95787b /actionpack/lib/action_controller/metal/conditional_get.rb
parentd690af13fcdae086b08dc0043643f5a66ea8cb06 (diff)
downloadrails-c94a00757dac150b17d9272b72288217c66f0a2d.tar.gz
rails-c94a00757dac150b17d9272b72288217c66f0a2d.tar.bz2
rails-c94a00757dac150b17d9272b72288217c66f0a2d.zip
Add support for more HTTP cache controls
From <https://tools.ietf.org/html/rfc5861>: > The stale-if-error HTTP Cache-Control extension allows a cache to > return a stale response when an error -- e.g., a 500 Internal Server > Error, a network segment, or DNS failure -- is encountered, rather > than returning a "hard" error. This improves availability. > > The stale-while-revalidate HTTP Cache-Control extension allows a > cache to immediately return a stale response while it revalidates it > in the background, thereby hiding latency (both in the network and on > the server) from clients. These are useful, fully standardized parts of the HTTP protocol with widespread support among CDN vendors. Supporting them will make it easier to utilize reverse proxies and CDNs from Rails.
Diffstat (limited to 'actionpack/lib/action_controller/metal/conditional_get.rb')
-rw-r--r--actionpack/lib/action_controller/metal/conditional_get.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/metal/conditional_get.rb b/actionpack/lib/action_controller/metal/conditional_get.rb
index 06b6a95ff8..4be4557e2c 100644
--- a/actionpack/lib/action_controller/metal/conditional_get.rb
+++ b/actionpack/lib/action_controller/metal/conditional_get.rb
@@ -235,7 +235,9 @@ module ActionController
response.cache_control.merge!(
max_age: seconds,
public: options.delete(:public),
- must_revalidate: options.delete(:must_revalidate)
+ 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)