Symfony HTTP缓存无效

Symfony HTTP缓存无效,symfony,http,caching,cache-control,http-caching,Symfony,Http,Caching,Cache Control,Http Caching,事情是这样的。Symfony 2.8设置。我希望使用Symfony HTTP缓存(内容很少更改)和为缓存的呈现内容提供服务,以便能够随时使其失效 当我像这样使用Symfony HTTP缓存时: $response = new JsonResponse($data, Response::HTTP_OK); $response->setPublic(); $response->setSharedMaxAge(3600); $response->headers->addCach

事情是这样的。Symfony 2.8设置。我希望使用Symfony HTTP缓存(内容很少更改)为缓存的呈现内容提供服务,以便能够随时使其失效

当我像这样使用Symfony HTTP缓存时:

$response = new JsonResponse($data, Response::HTTP_OK);
$response->setPublic();
$response->setSharedMaxAge(3600);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->setVary('Accept-Encoding');
它会产生以下标题:

Cache-Control:must-revalidate, public, s-maxage=3600
vary:Accept-Encoding
内容被缓存,但由于缓存控制设置为
public
,中间代理也可以缓存它,显然我不能使那里的数据无效。 另一方面,将缓存控制设置为
private
将强制Symfony HTTP缓存不存储它

使用Varnish(在本例中我不能使用),我将从应用服务器发送
缓存控制:public
,并使用VCL规则将其覆盖到
缓存控制:private
,因此浏览器总是返回检查新版本

我想知道我是否应该对symfonyhttp缓存做类似的事情(一旦响应通过缓存层,就覆盖缓存控制头),或者有更简单的方法吗