我是 zend 的新手。我使用 zend 框架开发了一个网站。现在,我想在我的网站中设置 gzip 压缩。请您指导我逐步实施这一点。
提前致谢。卡迈勒·阿罗拉
有两种方法可以在您的网站中对输出进行 gzip 压缩。
使用 Web 服务器。如果您的 Web 服务器是 apache,您可以参考此处获取有关如何在服务器上启用 mod_deflate 的良好文档。
使用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 代码发送给用户。
我用你的提示制作了 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)
归档时间: |
|
查看次数: |
3779 次 |
最近记录: |