3

下面的代码是两个事件有什么好处。

它实际上在做什么?

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();

请在我的应用程序中解释此代码的功能。它的作用是什么?它对我有什么帮助?

4

3 回答 3

4

上面的代码缓冲内容并根据浏览器对其进行压缩,而不是直接发送。

Yii::app()->onBeginRequest = function($event)
{
return ob_start("ob_gzhandler");
};

上面的意思是当请求开始时,它会缓冲内容,使用回调将内容设置为gzip、deflate或none,具体取决于浏览器。

Yii::app()->onEndRequest = function($event)
{
return ob_end_flush();
};

上面的代码只是意味着在请求结束时,它将输出缓冲区内容。

于 2012-06-11T09:28:09.330 回答
2

它缓冲内容,并在将其发送给浏览器之前询问浏览器是否可以接受压缩内容。如果可以,它将在提供之前压缩 HTML。否则,它将提供解压缩的文件。

压缩内容可减小浏览器需要下载的 HTML 的大小,从而提高性能。您的用户将看到多少性能提升取决于 HTML 的大小 - 更大的页面会看到更多的好处,而小页面实际上可能需要更长的时间来呈现,因为浏览器必须先解压缩内容。使用 Firebug 或 Chrome 开发者工具栏看看是否值得。

另外,检查对服务器端的影响。同样,增加服务器负载的不利影响可能超过增加的客户端页面渲染速度。因此,它最适用于大量缓存。

这通常是您在优化网站以寻求性能提升时所做的事情。

于 2012-06-11T09:41:48.047 回答
1

如果您想将 gzhanlder 直接添加到主配置文件,您可以在 main.php 中设置以下行

'onBeginRequest'=>create_function('$event', 'return ob_start("ob_gzhandler");'),
'onEndRequest'=>create_function('$event', 'return ob_end_flush();'),

这两行添加 GzipHandler

于 2013-03-04T06:58:08.430 回答