我正在尝试使用http缓存.在我的控制器中,我按如下方式设置响应:
$response->setPublic();
$response->setMaxAge(120);
$response->setSharedMaxAge(120);
$response->setLastModified($lastModifiedAt);
Run Code Online (Sandbox Code Playgroud)
开发模式
在开发环境中,第一个响应是带有以下标题的200:
cache-control:max-age=120, public, s-maxage=120
last-modified:Wed, 29 Feb 2012 19:00:00 GMT
Run Code Online (Sandbox Code Playgroud)
在接下来的2分钟内,每个响应都是304,包含以下标题:
cache-control:max-age=120, public, s-maxage=120
Run Code Online (Sandbox Code Playgroud)
这基本上是我所期望的.
刺激模式
在prod模式下,响应头是不同的.请注意,在app.php中,我将内核包装在AppCache中.
第一个响应是200以下标题:
cache-control:must-revalidate, no-cache, private
last-modified:Thu, 01 Mar 2012 11:17:35 GMT
Run Code Online (Sandbox Code Playgroud)
所以这是一个私有的无缓存响应.
每一个下一个请求都是我所期望的那样; 带有以下标题的304:
cache-control:max-age=120, public, s-maxage=120
Run Code Online (Sandbox Code Playgroud)
我应该担心吗?这是预期的行为吗?
如果我把Varnish或Akamai服务器放在它面前会发生什么?
我做了一些调试,我认为响应是私有的,因为最后修改过的头文件.HttpCache内核使用EsiResponseCacheStrategy来更新缓存的响应(HttpCache :: handle()方法).
if (HttpKernelInterface::MASTER_REQUEST === $type) {
$this->esiCacheStrategy->update($response);
}
Run Code Online (Sandbox Code Playgroud)
如果EsiResponseCacheStrategy 使用Last-Response或ETag(EsiResponseCacheStrategy :: add()方法),则将响应转换为非缓存:
if ($response->isValidateable()) {
$this->cacheable = false;
} else {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果存在Last-Response或ETag标头,则Response :: isValidateable()返回true. …
在开发服务器上,我想删除未使用的数据库.要意识到我需要知道数据库是否仍被某人使用.
有没有办法获得给定数据库,架构或表的上次访问或修改日期?
嗨,这是我的PHP代码前获得URL的状态。
$client = new Client();
$url_to_traverse = 'http://wordcomat.com';
$crawler = $client->request('GET', $url_to_traverse);
$status_code = $client->getResponse()->getStatus();
Run Code Online (Sandbox Code Playgroud)
但我尝试找到Facebook的状态代码,它不返回任何东西。
$client = new Client();
$url_to_traverse = 'http://www.facebook.com';
$crawler = $client->request('GET', $url_to_traverse);
$status_code = $client->getResponse()->getStatus();
Run Code Online (Sandbox Code Playgroud)
推特不工作。
$client = new Client();
$url_to_traverse = 'http://www.twitter.com';
$crawler = $client->request('GET', $url_to_traverse);
$status_code = $client->getResponse()->getStatus();
Run Code Online (Sandbox Code Playgroud)
Facebook或Twitter或linkedin或谷歌不返回任何东西,但不返回任何错误或警告,我如何获得该链接的状态。
谢谢。