I have developed my site from localhost, right after I am hosting. Now site is loading very slow as compared to speed in localhost.

What can I do to speedup website?

  • @TejabhagavanKollepara : Actually my site consists 50k products, and large no.of images. you mentioned eg is not match for me, – Gem Jan 27 '17 at 5:24

You can follow below two links for speed optimization,




Quick way to speed up Magento is to

  • Enable all caches (Admin - System - Cache management)
  • Disable logs (Admin - System - Configuration - Developer)
  • Enable Flat Catalog (Admin - System - Configuration - Catalog)

But if after all the site on Server is slower that on localhost - than it's Server issues and it should be configured better (use SSD storage for database for example)

  • When i enable flat category my menu completely collapsed. – Gem Jul 6 '16 at 9:37
  • 1
    After it's enabled, you have to rebuild two indexes at Admin - System - Index Management: Catalog Flat Product and Catalog Flat Category. Then all should be fine (if top magento menu on frontend have no serious modifications, which can prevent list of categories to be delivered from Flat index) – Neklo.com Jul 6 '16 at 9:42
  • after i did what you told, my category alignment rearranged – Gem Jul 6 '16 at 10:46
  • all my attribute not disable – Gem Jul 6 '16 at 11:23
  • Than I think you should disable Use Flat Category, but can keep Use Flat Product at Admin - System - Configuration - Catalog, which should give you more speed anyway. And as for attributes - can't understand you clearly. How attribute can be disabled? – Neklo.com Jul 6 '16 at 12:03

If your site have a lot of modifications, you can also try next on local copy:

edit file app/code/core/Mage/Core/Block/Template.php and replace function _toHtml() with next:

protected function _toHtml()
    if (!$this->getTemplate()) {
        return '';

    $time = microtime();
    $time = explode(' ', $time);
    $time = $time[1] + $time[0];
    $start = $time;

    $html = $this->renderView();

    $time = microtime();
    $time = explode(' ', $time);
    $time = $time[1] + $time[0];
    $finish = $time;
    $total_time = round(($finish - $start), 4);

   if($total_time > 0.4) {
       return $html."<h4><br/><br/>{$this->getTemplate()} | ".$total_time.' seconds passed </h4>';
   } else {
        return $html;

then, if any block on page is loaded more that 0.4 seconds - you will see it's load time at the bottom of block (on frontend) BUT ... parent blocks will show summary time of all their child blocks.

So you have to find blocks with big load time and deep nesting. Or it can be blocks that repeats many times on page (but also have deep nesting)

Not the answer you're looking for? Browse other questions tagged or ask your own question.