2014-11-21 24 views
0

我已經創建了一個基於屬性過濾產品集合的擴展。 下面是控制器,塊和視圖模板代碼。Magento:以35秒裝載4個產品的

控制器

$url = Mage::getUrl('no-route'); 
    if(Mage::app()->getRequest()->getParam('ajax')){ 
     echo $this->getLayout()->createBlock('catalogextensions/bestsellers_home_list')   
      ->setTemplate('catalog/landings/bestseller.phtml') 
      ->toHtml(); 
    } 
    else{ 
    $this->loadLayout(); 
    $this->getLayout()->getBlock('head')->setTitle('Besesellers'); 
    $this->renderLayout(); 
    } 

塊產品收藏功能

$storeId = Mage::app()->getStore()->getId(); 
    $products = Mage::getResourceModel('catalog/product_collection') 
      ->addAttributeToSelect('*') 
      ->addAttributeToFilter(array(array('attribute'=>'top_seller', 'eq' => '1'))); 
    Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); 
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); 
    Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products); 
    $products->getSelect()->limit(4,$this->get_cur_page()); 
    return $products ; 

產品集合迭代上view.phtml模板。現在

,它正在35秒獲得輸出,下面是執行的,我是能夠通過使用PHP的microtime中()函數

對於

  1. 塊獲得的統計數據(產品集合)它採取圍繞0.01秒
  2. 模板渲染其採取圍繞0.12秒

但對控制器功能它正在圍繞35秒

我無法找到檢查什麼,因爲控制器功能只是在運行時創建塊。

*注意:我正在使用支付全頁緩存擴展名「Mirasvit FPC」。

我如何才能找到它什麼是需要時間

服務器配置

  • 30GB RAM,帶有4個vCPU。
  • 應用服務器:Nginx + php5-fpm。
  • 版本:Magento的CE 1.8.0.1

感謝。

回答

0

確保您的平板產品已設置爲開啓,並且您的過濾器所需的所有屬性均設置爲過濾器。

如果列表來自EAv表,它可能會消耗大量資源,從而減慢速度。

另外應用優化技巧。

0

首先,你確定你需要添加所有的屬性來選擇? 您可以將

addAttributeToSelect('*') 

addAttributeToSelect(array('attribute_code', 'attribute_code')) 

下一頁取代,究竟是

$this->get_cur_page() 

在做什麼?其他代碼不應該造成災難性的性能問題。

PS 這應該是一條評論,但我還未評論。