以下代码的好处是两个事件。
它实际上在做什么?
require_once($yii);
$app = Yii::createWebApplication($config);
Yii::app()->onBeginRequest = function($event)
{
return ob_start("ob_gzhandler");
};
Yii::app()->onEndRequest = function($event)
{
return ob_end_flush();
};
$app->run();
请在我的应用程序中解释此代码的功能。它做什么?它怎么能帮助我?
答案 0 :(得分:4)
上面的代码缓冲内容并根据浏览器对其进行gzip,而不是直接发送。
Yii::app()->onBeginRequest = function($event)
{
return ob_start("ob_gzhandler");
};
以上意味着当请求开始时,它将缓冲内容,并且使用回调将内容设置为gzip,deflate或none,具体取决于浏览器。
Yii::app()->onEndRequest = function($event)
{
return ob_end_flush();
};
上面的代码只是意味着在请求结束时,它将输出缓冲区内容。
答案 1 :(得分:2)
它缓冲内容,在发送浏览器之前,询问浏览器是否可以接受压缩内容。如果可以,它将在提供之前压缩HTML。否则,它会解压缩。
压缩内容减少了浏览器需要下载的HTML大小,从而提高了性能。用户将看到多少性能增益取决于HTML的大小 - 较大的页面将看到更多的好处,而小的页面实际上可能需要更长的时间来呈现,因为浏览器必须首先解压缩内容。使用Firebug或Chrome开发者工具栏来查看它是否值得。
另外,检查服务器端的影响。同样,增加服务器负载的缺点可能超过增加的客户端页面呈现速度。因此,它适用于大量缓存。
这通常是您在优化网站时所做的事情,寻求性能提升。
答案 2 :(得分:1)
如果你想直接添加gzhanlder到主配置文件你可以在main.php中设置以下行
'onBeginRequest'=>create_function('$event', 'return ob_start("ob_gzhandler");'),
'onEndRequest'=>create_function('$event', 'return ob_end_flush();'),
这两行添加GzipHandler