6

ホームページの読み込みに時間がかかることに気付きました.site24x7.comによると、実際には6秒以上かかります.そのため、要素をオフにして原因を特定しようとしました.新製品とベストセラー製品を表示します。

ホームページからこれらを削除するとすぐに、ページは 0.5 秒未満で読み込まれます。

では、productCollection の最適化とキャッシュを手伝ってくれる人はいますか? サーバーに APC をインストールして実行していますが、app/design/frontend/default/MY_THEME/catalog/product/newproducts.phtml にあるファイルをキャッシュしているかどうかはわかりません。

したがって、ベストセラー (実際に最も閲覧された) の私のコレクション呼び出しは次のようになります。

    <?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)
    ?>

これをさらに最適化するにはどうすればよいですか?

4

2 に答える 2

7

試す

  $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)); 
 }

見る

于 2013-03-14T12:52:44.213 に答える