2010-12-10 3 views

답변

4

언제든지 ob 함수를 사용하여 index.php에서 결과를 얻은 다음 원하는 내용으로 처리 할 수 ​​있습니다. gzip 또는 수축을 가능하게하는 것만큼이나 귀하의 사이트를 향상시키는 지 의심 스럽습니다

+0

'index.php'를 편집해서는 안됩니다. – Simon

+0

@Simon 누가 index.php를 편집해야한다고 말하면서 코드 소유자이고 편집에 대한 책임을지는 한 당신이 할 수있는 일은 무엇이든 할 수 있지만 –

+0

Err ... 이것은 정확히 대답은 제안한다. 그리고 아닙니다, IMHO 당신은 핵심을 편집해서는 안됩니다. 절대로. – Simon

2

Google의 mod_pagespeed일까요? 그것은 당신을 위해 그것을 투명하게 할 것입니다. gzip에 +1하고 어느 쪽이든 수축시킵니다.

+0

mod_pagespeed가 이러한 상황에 대해 만들어졌습니다. 그러나 모든 요청에 ​​대해 아직 수행 중입니다. – clockworkgeek

+0

그건 사실이고 시간 낭비로 전체 페이지 캐싱을 이용하는 아이디어를 좋아합니다. HTML 디플레이션이 mod_pagespeed에 걸리는 시간에 대한 아이디어가 있습니까? 이 문제가 얼마나 중요한지에 대한 감각이 없습니다. –

+0

네이티브 코드이므로 스크립트 버전보다 빠릅니다. 다른 캐싱 옵션 인 mod_disk_cache와 mod_mem_cache는 물론 mod_pagespeed 후에 인스턴스화되었는지 확실하지 않거나 역방향 프록시를 사용할 수 있습니다. 이러한 종류의 캐싱 옵션은 일반적으로 Magento가 설정하지 않은 Expires 및 Vary 헤더가 필요하므로 유용성이 제한 될 수 있습니다. 기본적으로 나는 모른다. 단지 디버깅 프로파일 도구 만이 당신에게 말할 수있다. – clockworkgeek

5

너무 자주하지 않도록 출력물을 캐싱하기 전에 최소화 작업을 수행하는 것이 가장 이상적입니다.

protected function _toHtml() 
{ 
    $html = parent::_toHtml(); 
    // MINIFY CONTENTS OF $html HERE 
    return $html; 
} 

는 전체 페이지에 한 번 작업을 수행하는이 방법, 반환 값은 다음에 마 젠토 캐시 할 수 있습니다 내가 생각할 수있는 가장 좋은 장소 Mage_Page_Block_Html을 무시하고 새 클래스에 다음과 같은 기능을 추가하는 것입니다 그것은 일반적인 방식입니다. 각 블록에서 개별적으로 성능이 저하되어 효율성이 떨어질 수 있습니다.

19

Magento는 응답 객체를 사용하여 모든 출력을 보냅니다.

모든 출력이이 개체에 추가 된 후 해당 sendResponse 메서드가 호출됩니다.

당신은 http_response_send_before 이벤트

<!-- in your module's config.xml --> 
<http_response_send_before> 
    <observers> 
     <unique_name> 
      <type>singleton</type> 
      <class>group/observer</class> 
      <method>alterOutput</method> 
     </unique_name> 
    </observers> 
</http_response_send_before> 

다음 관찰자 당신이 몸을 얻고 설정할 수 있습니다에 대한 출력, 설치 리스너를 변경하려면

class Packagename_Modulename_Model_Observer 
{ 
    public function alterOutput($observer) 
    { 
     $response = $observer->getResponse();  
     $html  = $response->getBody();   
     //modify html here   
     $response->setBody($html); 
    } 
} 

당신이 관심이 있다면 이 클래스는 다음 클래스의 sendResponse 메서드에서 호출됩니다.

app/code/core/Mage/Core/Controller/Response/Http.php 

출력 자체는

lib/Zend/Controller/Response/Abstract.php 
+0

평소와 같이 훌륭한 대답 –

+0

위의 코드를 사용했지만 전체 페이지 캐싱과 작동하지 않는 것 같습니다. –

관련 문제