diff --git a/src/Symfony/Component/HttpFoundation/Response.php b/src/Symfony/Component/HttpFoundation/Response.php index 9ef9a7cd5caf..f5fe9f1dd4e4 100644 --- a/src/Symfony/Component/HttpFoundation/Response.php +++ b/src/Symfony/Component/HttpFoundation/Response.php @@ -535,15 +535,15 @@ public function setEtag($etag = null, $weak = false) } /** - * Sets Response cache headers. + * Sets Response cache headers (validation and/or expiration). * - * Available options are: etag, last_modified, private, and public. + * Available options are: etag, last_modified, max_age, s_maxage, private, and public. * * @param array $options An array of cache options */ public function setCache(array $options) { - if ($diff = array_diff_key($options, array('etag', 'last_modified', 'private', 'public'))) { + if ($diff = array_diff_key($options, array('etag', 'last_modified', 'max_age', 's_maxage', 'private', 'public'))) { throw new \InvalidArgumentException(sprintf('Response does not support the following options: "%s".', implode('", "', array_keys($diff)))); } @@ -555,6 +555,14 @@ public function setCache(array $options) $this->setLastModified($options['last_modified']); } + if (isset($options['max_age'])) { + $this->setMaxAge($options['max_age']); + } + + if (isset($options['s_maxage'])) { + $this->setSharedMaxAge($options['s_maxage']); + } + if (isset($options['public'])) { if ($options['public']) { $this->setPublic();