2011-12-19 3 views

답변

4

출력을 웹 사이트에 출력하는 방법에는 두 가지가 있습니다. 웹 서버 Webserver.If 사용

  1. 은 서버에 mod_deflate를를 사용하는 방법에 대한 좋은 문서에 대한 here를 참조 할 수 있습니다 아파치된다.

  2. 젠드 프레임 워크 사용. 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', 
    "//&lt;![CDATA[n".'1'."n//]]>" 
); 

$content = preg_replace($search, $replace, $content); 

그래서 전체 :

4

내가 브루노 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); 
} 
0

와 젠드 프레임 워크 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', "//&lt;![CDATA[n".'1'."n//]]>"), $content); 

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

    $response->setContent($content); 
}