젠드를 처음 사용합니다. 젠드 프레임 워크를 사용하여 웹 사이트를 개발했습니다. 자, 내 웹 사이트에서 gzip 압축을 설정하려고합니다. 이걸 구현하는 방법을 현명하게 안내해 주시겠습니까?젠드 프레임 워크 웹 사이트에서 gzip 압축을 설정하는 방법
미리 감사드립니다. 카멜 아로라
젠드를 처음 사용합니다. 젠드 프레임 워크를 사용하여 웹 사이트를 개발했습니다. 자, 내 웹 사이트에서 gzip 압축을 설정하려고합니다. 이걸 구현하는 방법을 현명하게 안내해 주시겠습니까?젠드 프레임 워크 웹 사이트에서 gzip 압축을 설정하는 방법
미리 감사드립니다. 카멜 아로라
출력을 웹 사이트에 출력하는 방법에는 두 가지가 있습니다. 웹 서버 Webserver.If 사용
은 서버에 mod_deflate를를 사용하는 방법에 대한 좋은 문서에 대한 here를 참조 할 수 있습니다 아파치된다.
젠드 프레임 워크 사용. this website 인 다음 코드를 시도하십시오. 부트 스트랩 파일에 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 */
}
GZIP 이미지를 압축하지 않고, 사이트에서 바로 원시 HTML/CSS/JS/XML/JSON 코드는 사용자에게 전송된다.
$search = array(
'/\>[^\S ]+/s', // strip whitespaces after tags, except space
'/[^\S ]+\</s', // strip whitespaces before tags, except space
'/(\s)+/s', // shorten multiple whitespace sequences
'#(?://)?<![CDATA[(.*?)(?://)?]]>#s' //leave CDATA alone
);
$replace = array(
'>',
'<',
'\\1',
"//<![CDATA[n".'1'."n//]]>"
);
$content = preg_replace($search, $replace, $content);
그래서 전체 :
내가 브루노 Pitteli의 답을 기리는 당신의 팁
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);
}
와 젠드 프레임 워크 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 = preg_replace(array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s', '#(?://)?<![CDATA[(.*?)(?://)?]]>#s'), array('>', '<', '\\1', "//<![CDATA[n".'1'."n//]]>"), $content);
if (@strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
header('Content-Encoding: gzip');
$content = gzencode($content, 9);
}
$response->setContent($content);
}