我创建了一个基于属性过滤产品集合的扩展程序。 下面是控制器,块和视图模板代码。
控制器
$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()函数获得的执行统计数据
对于
但对于控制器功能,它需要 35秒
我无法找到要检查的内容,因为控制器功能只是在运行时创建一个Block。
*注意:我正在使用付费整页缓存扩展程序“Mirasvit FPC”。
我怎样才能找到花时间
服务器配置
感谢。
答案 0 :(得分:0)
您使用一种不赞成使用的方式来调用过滤器。我不知道这是否真的会影响加载时间,但使用addFieldToFilter()会限制对数据库的调用并且可能很有用。您可以使用:
Magento: Filter products by Status
filtering product collection on "is_salable"
块可能未正确缓存。我的意思是每次调用页面时都会加载产品。
答案 1 :(得分:0)
确保您的平板产品设置为开启,并且过滤器所需的所有属性都设置为过滤器。
如果列表来自EAv表,它可能会消耗大量资源,从而减慢速度。
另外应用优化技巧。
答案 2 :(得分:0)
首先,您确定需要添加所有要选择的属性吗? 您可以替换
addAttributeToSelect('*')
与
addAttributeToSelect(array('attribute_code', 'attribute_code'))
接下来,究竟是什么
$this->get_cur_page()
在做什么?其余代码不应该造成灾难性的性能问题。
PS 这应该是一个评论,但我还没有发表评论。