Ive注意到我的主页需要很长时间才能加载-根据site24x7.com的情况,实际上已超过6秒钟,因此我一直在关闭元素以尝试确定原因,这归结为我制作的2个产品收集文件显示新产品和最畅销产品。

一旦我从首页中删除了这些内容,该页面就会在不到0.5秒的时间内加载完毕。

因此,任何人都可以帮助优化和缓存productCollection吗?我已经在服务器上安装并运行了APC,但是我不确定它是否正在缓存位于app/design/frontend/default/MY_THEME/catalog/product/newproducts.phtml中的文件

因此,我的畅销书征集 Activity (实际上是观看最多的人)看起来像这样;

    <?php $storeId = Mage::app()->getStore()->getId(); // return current store id  ?>
    <?php $_productCollection= Mage::getResourceModel('reports/product_collection')
    ->addAttributeToSelect('*')
    ->addStoreFilter($storeId)
    ->addViewsCount()
    ->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
    ->addFieldToFilter('status',Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
    $_productCollection->getSelect()->limit(8)
    ?>

我该如何进一步优化?

最佳答案

尝试

  $storeId = Mage::app()->getStore()->getId();
  $cache = Mage::getSingleton('core/cache');
  $key = 'homepage-most-view-' . $storeId;

  if(! $data = $cache->load($key)){
      $_productCollection= Mage::getResourceModel('reports/product_collection')
      ->addAttributeToSelect('*')
      ->addStoreFilter($storeId)
      ->addViewsCount()
      ->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
      ->addFieldToFilter('status',Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
      $_productCollection->getSelect()->limit(8)
      // get the element you need from  $_productCollection and store in $array
      $data = serialize($array);
      $cache->save(urlencode($data), $key, array("homepage_cache"), 60*60*24);
  }
  else{
      $data = unserialize(urldecode($data));
 }


  • http://www.nicksays.co.uk/developers-guide-magento-cache/
  • http://inchoo.net/ecommerce/magento/magento-block-caching/
  • 关于magento - Magento如何缓存productCollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15408003/

    10-15 01:21
    查看更多