如果第一个响应是AppCache(Symfony2)私有的,可以吗?
我正在尝试使用http缓存。在我的控制器中,我将响应设置如下: $response->setPublic(); $response->setMaxAge(120); $response->setSharedMaxAge(120); $response->setLastModified($lastModifiedAt); 开发模式 在开发环境中,第一个响应是带有以下标头的200: cache-control:max-age=120, public, s-maxage=120 last-modified:Wed, 29 Feb 2012 19:00:00 GMT 在接下来的2分钟内,每个响应都是带有以下标头的304: cache-control:max-age=120, public, s-maxage=120 这基本上就是我所期望的。 产品模式 在生产模式下,响应头不同。请注意,在app.php中,我将内核包装在AppCache中。 第一个响应是带有以下标头的200: cache-control:must-revalidate, no-cache, private last-modified:Thu, 01 Mar 2012 11:17:35 GMT 因此,这是一个私有的无缓存响应。 每个下一个请求几乎都是我期望的。具有以下标头的304: cache-control:max-age=120, public, s-maxage=120 我应该担心吗?这是预期的行为吗? 如果将Varnish或Akamai服务器放在前面,会发生什么? 我做了一些调试,发现由于最后修改的标头,响应是私有的。HttpCache内核使用EsiResponseCacheStrategy更新缓存的响应(HttpCache :: handle()方法)。 if (HttpKernelInterface::MASTER_REQUEST === $type) { $this->esiCacheStrategy->update($response); } …