【发布时间】:2014-03-31 13:32:36
【问题描述】:
在Symfony2 docs 中有对stale-while-revalidate 的引用:
// app/AppCache.php
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
class AppCache extends HttpCache
{
protected function getOptions()
{
return array(
'debug' => false,
'default_ttl' => 0,
'private_headers' => array('Authorization', 'Cookie'),
'allow_reload' => false,
'allow_revalidate' => false,
'stale_while_revalidate' => 2,
'stale_if_error' => 60,
);
}
}
但是我无法使用 Symfony2 网关缓存实现以下行为(described here):
我使用的几乎都是默认配置。我收到以下回复:
在第一次请求时,来自服务器的响应(耗时 300 毫秒)。
Age:0
Cache-Control:public, s-maxage=20
X-Symfony-Cache:GET /api/boards/kQVhc2uJ: miss, store
第二次请求时,响应来自网关缓存(耗时 30 毫秒)。
Age:4
Cache-Control:public, s-maxage=20
X-Symfony-Cache:GET /api/boards/kQVhc2uJ: fresh
在第三次请求时,来自服务器的响应(耗时 300 毫秒)。
Age:0
Cache-Control:public, s-maxage=20
X-Symfony-Cache:GET /api/boards/kQVhc2uJ: stale, invalid, store
我希望从网关缓存和网关缓存返回第三个请求,以对服务器进行异步调用以重新验证缓存。相反,我通过网关缓存直接调用服务器。
Symfony2 网关缓存是否支持“state-while-revalidate”扩展?还是只对 Squid 或 Varnish 有用?
【问题讨论】:
-
我在这里针对我的案例提出了一个更具体的问题:stackoverflow.com/questions/22444320/… 这是试图提出一个更直接的 Symfony 相关问题。