https://blog.superhosting.bg/faster-opencart-part-two.html

Натиснете ENTER, за да видите резултатите или ESC за изход.

Блог на SuperHosting.BG

Ускоряване на OpenCart електронен магазин (Част 2)

2016-07-20
Съвети от support-a
open cart, оптимизация, по-бърз сайт, онлайн магазин, онлайн търговия, CMS, категория, продукти, OpenCart, бавен OpenCart, индексиране, таблица, бази данни

В предходна статия ви показахме как можете да ускорите зареждането на вашия OpenCart онлайн магазин като спрете изчисляването и показването на броя продукти по категории.

Така вие редуцирате множеството SQL заявки към базата данни. Ако ви е нужно броят на продуктите да се показва, можете да извършите други оптимизации за подобряване скоростта на зареждане.

Днес ще прибавим още една основна техника за оптимизация и ускоряване на OpenCart.

Тази оптимизация засяга базата данни на онлайн магазина и може да се извърши отделно от оптимизацията, описана в предходната статия. Ако ги комбинирате, ще можете да видите много голямо подобрение в скоростта на зареждане.

При зареждането на една страница освен за изчисляване на броя продукти за всяка отделна категория, се изпълняват още много други SQL заявки.

Източник на SQL заявки е опцията за приятелски адреси в OpenCart. Всеки адрес и съответстващия му приятелски адрес, се записват в базата данни. Когато се зарежда страница от онлайн магазина за всеки един адрес на категория, продукт и всичко друго, към базата данни се изпращат по няколко SQL заявки. Виждали сме случаи при онлайн магазини, в които при зареждането само на началната страница с около 30 продукта, се извършват 874 SQL заявки, от които 510 само за приятелските адреси, 185 от темата и останалите 179 за продукти, картинки, опции, настройки и всичко останало.

Когато броят на SQL заявките не може да се намали, може да се приложи оптимизация на намирането на информация в базата данни. С поставянето на индекси в най-често претърсваните таблици SQL заявките ще могат да намират и извличат по-бързо търсената информация.

Най-разпространеният пример за това какво е индекс в базата данни:

В телефонния указател записите (редовете) са подредени по име и фамилия в азбучен ред. За да потърсите в него Иван, можете да отворите страницата, в която са подредени всички имена, започващи с буквата И. Това подреждане представлява нещо като главен индекс или главна подредба на записите в указателя. Така ще спестите много време и усилия и няма да ви се наложи да прегледате всяка една страница. Ако обаче потърсите по град, всички редове с дадения град са разпръснати. Тогава ще се наложи да прегледате всяка една страница, за да извадите всеки човек от този град.

Ако се постави индекс на колоната с град, тогава ще знаете кои точно редове съдържат този град. Този втори индекс е като виртуално пренареждане на информацията в указателя по друг параметър вместо по име. Когато търсите по град, ще можете да използвате азбучно подреден списък с имената на градовете и намирането на информацията ще е много бързо.

Индексите помагат за по-бързото намиране на конкретна информация в таблиците на базата данни. Когато информацията се търси по определена колона в таблицата, на тази колона може да се създаде индекс.

Оптимизацията, описана в тази част, представлява поставяне на индекси в определени таблици на базата данни. Ако ползвате хостинг акаунт с контролен панел cPanel, единствено ще трябва да достъпите инструмента за работа с базите данни – phpMyAdmin.

Направете бекъп на базата данни

Преди да започнете с промените, погрижете се да имате готов бекъп на базата данни, за да можете бързо да възстановите предишното й състояние.

  • Ръчно генериране на бекъп и възстановяване

Бекъп на базата данни може да се извърши ръчно през cPanel -> Backups -> Генериране на пълен бекъп (full backup). Възстановяване на базата данни от този бекъп също се извършва ръчно.

Ако базата данни е с по-малък размер, можете бързо да създадете бекъп копие през phpMyAdmin. Mаркирате базата данни, кликвате на Операции и в секция Копиране на БД в: попълвате името на нова база данни (например cpaneluser_newdb).

  • Автоматично генериране на бекъп и възстановяване

Бекъп на базата данни се извършва автоматично и ще присъства в системно генерирания бекъп за хостинг акаунта. За възстановяване на базата данни от този системен бекъп препоръчваме да се използва Backup Manager by SuperHosting в cPanel. В мениджъра можете да видите датата и часа на последно генерирания системен бекъп. Ако след датата на генерирания бекъп не са извършвани други промени, освен тези за оптимизацията, тогава можете бързо и лесно да върнете предишното състояние на базата данни, без загуба на информация.

Оптимизация на базата данни

Важно: Поставянето на индекси по определени таблици може да допринесе за ускоряване на зареждането на потребителската част на онлайн магазина, но може да се отрази в забавяне на зареждането в административния панел. Забавяне ще се усети, когато се създава нова категория или се добави нов продукт, тъй като съществуващият индекс в съответната таблица ще се пресъздаде (обнови).

С прилагането на промените таблица по таблица можете да извършвате измерване на скоростта и проверка на коректното зареждане на онлайн магазина.

Описаните редове с код представляват SQL заявки, които можете да копирате, поставите в секция SQL на phpMyAdmin и изпълните. Веднъж поставен, индексът е постоянен и не е необходимо в бъдеще да го поставяте отново. Обърнете внимание и ако е необходимо, променете префикса на таблиците (в посочените примери префиксът е oc_).

Таблиците за категориите

В случай че имате много подкатегории с подкатегории, с подкатегории и т.н., поставете индекс на колоната path_id:

Таблиците за продуктите

Таблиците за опциите към продуктите

В случай че имате богат избор от опции към продуктите, добавете индекси и в следните таблици:

Таблицата за приятелските адреси

След поставяне на тези индекси, в определени случаи, сме забелязвали значително намаляване на времето за зареждане. Особено ускорение се получава в комбинация с оптимизацията чрез спиране изчисляването и показването на броя продукти по категории.

Съвет от support-а
Към цялостната оптимизация се включват и други промени, които можете да направите, като активиране на mod_deflate и Memcached, ползване на mod_expires и други. Към техниките за оптимизация се включва и ползването на SSD дискове за MySQL базата данни.
Съвет от support-а
Тази инструкция за оптимизация е резултат от честите запитвания от наши клиенти, но с нея не се изчерпват всички решения за нуждите на всеки един онлайн магазин на OpenCart. Когато тези кратки напътствия не са достатъчни, това, което препоръчваме, е да се потърси съдействие от професионалистите в тази област. Те могат да съдействат, извършвайки подробна проверка и прилагайки точна оптимизация за нуждите на конкретния онлайн магазин.

Специалист Техническа Поддръжка

Меган е нашият support гуру – може да отговори на всеки технически въпрос. Знае всичко за новите технологии. СуперСилата на Меган е, че може да обясни и най-сложните технологии на достъпен за всеки език.

500px270px
SuperHosting.BG

Препоръчани статии

Оставете коментар

2 Коментара към "Ускоряване на OpenCart електронен магазин (Част 2)"

Уведоми ме при
avatar

akvarelbg
Гост
20 юни 2016 17:25
Като допълнение на чудесните 2 статии относно оптимизирането на база данните бихме добавили и още няколко насоки към, които да насочите вниманието си: 1. Включване на компресията на сайта за всички ресурси и части не само за отделни – Enable gzip compression. 2. Включване на Mod_rewrite. 3. Оптимизиране големината на изображенията на сайта Ви. 4. Отлагане на зареждането на външни Java Script файлове (които са блокиращи) след видимата част на сайта Ви, или зареждането им А-синхронно. При всички случаи е добре да се спази препоръката на Support-а на Superhosting, и… още »
alarmabg
Гост
4 април 2015 8:13

точната информация на точното място.Ще е повече от задължително при подмяна на инсталацията на онлайн магазина с платформа на Оpencart да се спазят тези правила.И за мен лично скоростта видимо има значения дори и да е в границите на допустимото винаги е по добре да е много по долу

wpDiscuz