小编Jak*_*las的帖子

如果第一个响应是AppCache(Symfony2)的私有,这样可以吗?

我正在尝试使用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. …

caching cache-control http-caching symfony

141
推荐指数
2
解决办法
6267
查看次数

如何获取PostgreSQL数据库的上次访问/修改日期?

在开发服务器上,我想删除未使用的数据库.要意识到我需要知道数据库是否仍被某人使用.

有没有办法获得给定数据库,架构或表的上次访问或修改日期?

database postgresql

18
推荐指数
3
解决办法
2万
查看次数

Symfony DomCrawler状态代码不起作用?

嗨,这是我的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或谷歌不返回任何东西,但不返回任何错误或警告,我如何获得该链接的状态。

谢谢。

php web-crawler symfony

2
推荐指数
1
解决办法
906
查看次数

2
推荐指数
1
解决办法
1594
查看次数