如何在 zend 框架网站中设置 gzip 压缩

4 optimization zend-framework

我是 zend 的新手。我使用 zend 框架开发了一个网站。现在,我想在我的网站中设置 gzip 压缩。请您指导我逐步实施这一点。

提前致谢。卡迈勒·阿罗拉

Meh*_*nai 5

有两种方法可以在您的网站中对输出进行 gzip 压缩。

  1. 使用 Web 服务器。如果您的 Web 服务器是 apache,您可以参考此处获取有关如何在服务器上启用 mod_deflate 的良好文档。

  2. 使用zend框架。尝试以下来自该网站的代码。在引导文件中创建 gzip 压缩字符串。

代码:

try {
 $frontController = Zend_Controller_Front::getInstance();
 if (@strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
    ob_start();
    $frontController->dispatch();
    $output = gzencode(ob_get_contents(), 9);
    ob_end_clean();
    header('Content-Encoding: gzip');
    echo $output;
} else {
    $frontController->dispatch();
}
} catch (Exeption $e) {
if (Zend_Registry::isRegistered('Zend_Log')) {
    Zend_Registry::get('Zend_Log')->err($e->getMessage());
}
$message = $e->getMessage() . "\n\n" . $e->getTraceAsString();
/* trigger event */
}
Run Code Online (Sandbox Code Playgroud)

GZIP 不压缩图像,只是将站点中的原始 HTML/CSS/JS/XML/JSON 代码发送给用户。


Bru*_*ves 5

我用你的提示制作了 zend Framework 2 (zf2)

public function onBootstrap(MvcEvent $e)
{
    $eventManager = $e->getApplication()->getEventManager();
    $eventManager->attach("finish", array($this, "compressOutput"), 100);
}

public function compressOutput($e) 
{
    $response = $e->getResponse();
    $content = $response->getBody();
    $content = str_replace("  ", " ", str_replace("\n", " ", str_replace("\r", " ", str_replace("\t", " ", $content))));

    if(@strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false)
    {
        header('Content-Encoding: gzip');
        $content = gzencode($content, 9);
    }

    $response->setContent($content);
}
Run Code Online (Sandbox Code Playgroud)