-1

this code takes 3 sounds and more to execute . it isn't good and i need this code be faster and to speed up .. please just if you have experience about topic give a situation for speed up this code.

top content code:

class ControllerCommonContentTop extends Controller {
    public function index() {
        $this->load->model('design/layout');
        if (isset($this->request->get['route'])) {
            $route = (string)$this->request->get['route'];
        } else {
            $route = 'common/home';
        }
        $layout_id = 0;

        if ($route == 'product/category' && isset($this->request->get['path'])) {
            $this->load->model('catalog/category');

            $path = explode('_', (string)$this->request->get['path']);

            $layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path));
        }

        if ($route == 'product/product' && isset($this->request->get['product_id'])) {
            $this->load->model('catalog/product');

            $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
        }
        if ($route == 'information/information' && isset($this->request->get['information_id'])) {
            $this->load->model('catalog/information');

            $layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']);
        }
        if (!$layout_id) {
            $layout_id = $this->model_design_layout->getLayout($route);
        }

        if (!$layout_id) {
            $layout_id = $this->config->get('config_layout_id');
        }
        $this->load->model('extension/module');

        $data['modules'] = array();

        $modules = $this->model_design_layout->getLayoutModules($layout_id, 'content_top');

        foreach ($modules as $module) {
            $part = explode('.', $module['code']);

            if (isset($part[0]) && $this->config->get($part[0] . '_status')) {
                $data['modules'][] = $this->load->controller('module/' . $part[0]);
            }

            if (isset($part[1])) {
                $setting_info = $this->model_extension_module->getModule($part[1]);

                if ($setting_info && $setting_info['status']) {
                    $data['modules'][] = $this->load->controller('module/' . $part[0], $setting_info);
                }
            }
        }
        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/content_top.tpl')) {
            return $this->load->view($this->config->get('config_template') . '/template/common/content_top.tpl', $data);
        } else {
            return $this->load->view('default/template/common/content_top.tpl', $data);
        }
    }
}

footer code:

class ControllerCommonFooter extends Controller {
    public function index() {
        $this->load->language('common/footer');

        $data['text_information'] = $this->language->get('text_information');
        $data['text_service'] = $this->language->get('text_service');
        $data['text_extra'] = $this->language->get('text_extra');
        $data['text_contact'] = $this->language->get('text_contact');
        $data['text_return'] = $this->language->get('text_return');
        $data['text_sitemap'] = $this->language->get('text_sitemap');
        $data['text_manufacturer'] = $this->language->get('text_manufacturer');
        $data['text_voucher'] = $this->language->get('text_voucher');
        $data['text_affiliate'] = $this->language->get('text_affiliate');
        $data['text_special'] = $this->language->get('text_special');
        $data['text_account'] = $this->language->get('text_account');
        $data['text_order'] = $this->language->get('text_order');
        $data['text_wishlist'] = $this->language->get('text_wishlist');
        $data['text_newsletter'] = $this->language->get('text_newsletter');

        $this->load->model('catalog/information');

        $data['informations'] = array();

        foreach ($this->model_catalog_information->getInformations() as $result) {
            if ($result['bottom']) {
                $data['informations'][] = array(
                    'title' => $result['title'],
                    'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
                );
            }
        }

        $data['contact'] = $this->url->link('information/contact');
        $data['return'] = $this->url->link('account/return/add', '', 'SSL');
        $data['sitemap'] = $this->url->link('information/sitemap');
        $data['manufacturer'] = $this->url->link('product/manufacturer');
        $data['voucher'] = $this->url->link('account/voucher', '', 'SSL');
        $data['affiliate'] = $this->url->link('affiliate/account', '', 'SSL');
        $data['special'] = $this->url->link('product/special');
        $data['account'] = $this->url->link('account/account', '', 'SSL');
        $data['order'] = $this->url->link('account/order', '', 'SSL');
        $data['wishlist'] = $this->url->link('account/wishlist', '', 'SSL');
        $data['newsletter'] = $this->url->link('account/newsletter', '', 'SSL');

        $data['powered'] = sprintf($this->language->get('text_powered'), $this->config->get('config_name'), date('Y', time()));

        // Whos Online
        if ($this->config->get('config_customer_online')) {
            $this->load->model('tool/online');

            if (isset($this->request->server['REMOTE_ADDR'])) {
                $ip = $this->request->server['REMOTE_ADDR'];
            } else {
                $ip = '';
            }

            if (isset($this->request->server['HTTP_HOST']) && isset($this->request->server['REQUEST_URI'])) {
                $url = 'http://' . $this->request->server['HTTP_HOST'] . $this->request->server['REQUEST_URI'];
            } else {
                $url = '';
            }

            if (isset($this->request->server['HTTP_REFERER'])) {
                $referer = $this->request->server['HTTP_REFERER'];
            } else {
                $referer = '';
            }

            $this->model_tool_online->whosonline($ip, $this->customer->getId(), $url, $referer);
        }

        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/footer.tpl')) {
            return $this->load->view($this->config->get('config_template') . '/template/common/footer.tpl', $data);
        } else {
            return $this->load->view('default/template/common/footer.tpl', $data);
        }
    }
}
HDP
  • 4,005
  • 2
  • 36
  • 58
  • How many categories / subcategories does your shop have? In earlier OpenCart versions (1.5.x), there was an issue with too many categories & subcategories that caused the category count function to take a long time to run. Don't know if it was fixed for v2 or not – komodosp Dec 07 '15 at 11:36
  • I use OpenCart version 2 . And i have just 30 categories and 300 product just for now. – Farhad Azarbarzinniaz Dec 08 '15 at 06:46
  • You can use paid third party extension for increase page speeds. http://www.opencart.com/index.php?route=extension/extension/info&extension_id=6204&filter_search=speed&page=2 – HDP Dec 09 '15 at 04:53
  • Which is the part that takes 3 seconds? The entire page? Or just the header or just the footer? If header or footer, how do you know that's what's causing the delay? – komodosp Dec 09 '15 at 13:09
  • footer and header one by one takes 3 seconds, I used the PHP time function to discover how long they spend to execute . – Farhad Azarbarzinniaz Dec 10 '15 at 22:18

1 Answers1

0

Step back from the code and consider the entire page delivery.

Many times, performance issues can be resolved with the following:

  1. Compression - http://httpd.apache.org/docs/2.2/mod/mod_deflate.html
  2. Caching - https://httpd.apache.org/docs/2.4/mod/mod_expires.html
  3. Proper sizing of images - Be sure the images are being sent in about the same size as they will be rendered
  4. Minification - https://en.wikipedia.org/wiki/Minification_%28programming%29
  5. Reduction in the number of requests made - A good example of this is sprites
  6. Put JavaScript at the end of the body

This is a great tool to help you find ways to make your page faster: http://www.websiteoptimization.com/services/analyze/

user2182349
  • 9,569
  • 3
  • 29
  • 41