2011-03-02 3 views
1

나는 헤더에 여러 메이지 호출을 통해 카탈로그 카테 고리 모델을 얻고 아이템 컬렉션을 얻는다.Magento - 메이지 호출 캐싱

제 문제는 관리자가 HTML 블록 캐싱을 설정해도 내 페이지가 두 번 느린 것 같습니다. 나는 내가 할 수있는 생각은 무엇

사용하여이었다

$ 캐시 = 마술사 :: getSingleton ('코어/캐시');

 $newCarCollection = Mage::getModel('catalog/category')->load(11)->getProductCollection()->setPageSize(6); 
     $newCarCollection = $newCarCollection->getItems(); 
     $cache = Mage::getSingleton('core/cache'); 
     $cache->save($newCarCollection, "car_collection", array("car_cache"), 140); 
     $cache->load("car_collection"); 

이 단순히 작동하지 않습니다

따라서 같은 마법사에 대한 호출을 캐시 할 수 있습니다.

이렇게해도 될까요, 아니면 방금 만들었습니까?

감사

UPDATE :

function __construct() 
{ 
    $this->addData(array(
     'cache_lifetime' => 3600, 
     'cache_tags'  => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Core_Model_Store_Group::CACHE_TAG), 
    )); 
} 

답변

1

블록 캐싱 각 블록 타입뿐만 아니라 관리자의 옵션을 활성화해야합니다.
http://www.magentocommerce.com/wiki/development/block_cache_and_html_ouput

제대로 작동하면 제품 개체를 캐싱하는 것보다 효율적입니다.

+0

@clockworkgeek 그러나, 나는이 header.phtml 파일에서 이러한 호출을했습니다. 이 경우 어떻게 캐시합니까? 호출의 주석 처리를 제거하면 약 3 회의 Mage :: getModel 호출이 발생하고 각 항목에 범주의 제품을 가져 오는 foreach 루프가 있습니다. – terrid25

+0

@ terrid25 - 헤더 블록에 포함 된 블록을 만들 수 있습니다. 헤더는 카트 및 로그인/로그 아웃 링크와 같이 내용이 변경되어 캐시 될 수 없습니다. 블록의 출력은 헤더의 나머지 부분이 아닌 경우 캐시 될 수 있습니다. – clockworkgeek

+0

어떻게하면 되겠습니까? page.xml에 헤더 블록이 표시됩니다. 새 블록 (예 : nav.phtml)을 만든 다음이를 page.xml 파일에 추가해야합니까? – terrid25