【发布时间】:2015-04-07 11:55:16
【问题描述】:
如何在 Yii 中启用页面缓存?我按照文档进行操作,但它不起作用。
http://www.yiiframework.com/doc-2.0/guide-caching-page.html
http://www.yiiframework.com/doc-2.0/guide-structure-filters.html#pagecache
class SiteController extends Controller {
public function behaviors() {
return [
'pageCache' => [
'class' => 'yii\filters\PageCache',
'only' => ['index'],
'duration' => 10*60,
'variations' => [
\Yii::$app->language,
],
Server response
HTTP/1.1 200 OK
Date: Thu, 02 Apr 2015 01:25:06 GMT
Server: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.2a DAV/2 PHP/5.6.7
X-Powered-By: PHP/5.6.7
Set-Cookie: ...cookies...
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 4750
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
注意没有Cache-Control:max-age= 或Expires: 标题。如果我将类更改为xPageCache,那么它确实会因错误而失败,因此它正在读取设置。
【问题讨论】:
-
你能为我们扩展“不工作”吗?你怎么知道它不起作用?您在响应标头中寻找什么?
-
是否值得暂时取出
only看看是否有问题? -
@halfer 好的,我注释掉了那行,注释掉了
.htaccess,然后重新加载了页面,但它仍然没有发送任何Cache-Control标头。 -
为什么你认为 yii 必须给你发送缓存头?这是一个网络服务器作业(apache2、nginx)。 Yii 只是缓存页面内容并保存到文件、db 或 memcached(取决于配置)。
-
好的,接下来我将深入研究插件,看看它是否被调用(我希望它是,并且它在某些内部条件下失败)。另外,请尝试暂时取出
variations,以防出现问题。