Изпълнението на Magento е от първостепенно значение. Скоростта на зареждане има пряко и измеримо въздействие върху степента на конверсия на вашия уебсайт, поради което наличието на оптимизирана инсталация на Magento е от решаващо значение за успеха на вашия магазин Magento и вероятно дори на вашия бизнес като цяло.
В тази статия ще представя някои начини, по които Разработчици на Magento могат да оптимизират инсталацията си на Magento 2 и да обяснят как да направят следното:
Има много модули на Magento на трети страни с лош код, използващи остарели методи или имащи проблеми със съвместимостта с най-новата стабилна версия на Magento. Най-добрият начин за идентифициране на тежки заявки е използването на профилист. Това ви помага да определите колко MySQL заявки имате на дадена страница и колко са идентични. Знаейки това, можете да уплътните тези заявки в едно и по този начин да ускорите Magento.
Едно от основните неща, които младите разработчици правят погрешно в Magento, е да зареждат модели вътре в цикли. Опитайте се да избягвате това, доколкото можете. Заредете цялата колекция с всичко, от което се нуждаете, и след това преминете през нея. Винаги имайте предвид сложността на времето и пространството и изградете своя алгоритъм по оптимизиран начин.
Вижте как се зарежда вашето оформление и кои са блоковете на шаблони, които се представят най-бавно, след което разгледайте този код. Разгледайте показателите за модел CRUD, където можете да намерите проницателни данни, като например повиквания за зареждане в цикли.
Когато потребител има достъп до вашия магазин, се отправя заявка към сървъра. Тази заявка се обработва от PHP, като прави специфични операции и заявки към база данни, след което връща съответния HTML за показване на потребителя. Кешът на цяла страница съхранява този HTML отговор, така че следващата идентична заявка директно ще го върне, прескачайки всички заявки за обработка и база данни. Това прави реакцията на уебсайта много по-бърза.
Използването на кеш на цяла страница като част от усилията ви за оптимизация на Magento може значително да увеличи скоростта на уебсайта ви. Това ще създаде кеширани версии на вашите страници и ще ги достави на потребителя, вместо да изпълнява всички заявки за всяка заявка. Разбира се, не всички страници са кеширани. Например страницата на количката няма да бъде кеширана, в противен случай всички потребители ще видят първата кеширана версия на страницата. Това са динамични страници или раздели на страници, които са специфични за потребителя и сесията.
За да активирате кеша на Magento на цяла страница, можете да изпълните следната команда на CLI:
php bin/magento cache:enable full_page
За да активирате типовете кеш, можете да изпълните командата CLI:
php bin/magento cache:enable
Можете също да го направите от Magento Admin, като влезете като администратор:
Когато активирате кеш на цяла страница, използвайте Varnish, за да се справите с него, а не с файлове. Magento силно препоръчва да се използва лак (или Redis) в производството. Интегрираното кеширане на цели страници (или към файловата система, или към базата данни) е много по-бавно от Varnish и Varnish е предназначен за ускоряване на HTTP трафика.
Можете да намерите пълно ръководство за това как инсталирайте и конфигурирайте Varnish в официалната документация на Magento 2.
За да конфигурирате Magento да използва Varnish, влезте в администратора на Magento като администратор:
Кешът на цялата страница може лесно да бъде разбит в Magento 2. Например, ако искате да изключите блок от кеша, не използвайте атрибута cacheable='false'
в XML оформлението при деклариране на вашия блок. Това ще деактивира кеша за цялата страница, която съдържа този блок, не само за този блок. Това е грешка, която съм виждал как хората правят.
Потърсете cacheable='false'
атрибут във вашите оформления и вижте на кои блокове са зададени и на кои страници се извикват тези блокове. По този начин можете да установите дали тривиалните страници имат проблеми с кеша.
Можете също така да тествате дали страницата ви се кешира ръчно. Поставете магазина в режим за програмисти във вашата местна или сценична среда:
Ако не се промени на HIT, това означава, че страницата не е кеширана и кешът не работи.
Magento има три режима на работа, по подразбиране , разработчик , и производство режим.
Производственият режим е предназначен за внедряване в производствена система. Този режим скрива изключения, обслужва статичните файлове само от кеш паметта и не ви позволява да активирате или деактивирате типовете кеш в Magento Admin. Той също така предотвратява автоматичното компилиране на кодови файлове.
Докато работите и разработвате магазина, режимът за разработчици е активен. Не забравяйте да превключите на производствен режим, когато разполагате сайта си на сървъра на живо!
Командата CLI, за да видите текущия режим е:
php bin/magento deploy:mode:show
Командата CLI за превключване в производствен режим е:
php bin/magento deploy:mode:set production
Командата CLI за превключване в режим за разработчици е:
php bin/magento deploy:mode:set developer
Можете да намерите по-подробна информация за различните режими на Magento тук .
Минимизирането на CSS и JS файловете е важен елемент от оптимизацията на скоростта на Magento 2. Като ги минимизираме, премахваме всички интервали, раздели и нови редове във файловете. Получените файлове ще имат по-малко символи и следователно по-малък размер, така че те ще се изтеглят по-бързо.
Magento има вградена тази функция и можете да активирате CSS / JS минификация в Admin. За да активирате умаляването на JavaScript, изпълнете следните стъпки:
За да активирате CSS минификация, са необходими следните стъпки:
Забележка: Не обединявайте JS файлове - просто ги минимизирайте .
Magento използва модела EAV (стойност на атрибута на обекта), който съхранява атрибутите на своите обекти в множество таблици в зависимост от техния тип стойност. Използването на множество таблици, обединения и заявки за множество таблици са необходими за извличане на данните, което може да забави заявките.
Magento има опцията да използва плоски маси за каталога и продуктите. Плоските таблици се създават чрез обединяване на всички атрибути на обект в една таблица. Когато искаме данните, трябва да запитваме една таблица, което я прави много по-бърза.
Magento генерира и актуализира плоски таблици за всяка индексация. Можете да активирате плоски маси, като влезете в Magento Admin като администратор:
Вижте минималните изисквания на Magento и вижте дали вашият сървър ги отговаря. Можете да видите официалните изисквания за стека на технологията Magento 2.2.x. тук .
Конфигурацията на хостинга е много важна за производителността на Magento 2. Съществуват и специализирани хостинг услуги за Magento, въпреки че те могат да бъдат по-скоро маркетинг, отколкото каквото и да било друго.
В крайна сметка: Вземете най-бързото хостинг решение, което можете да си позволите, освен ако това не е прекалено много за вашия проект.
Размерът на вашите изображения очевидно влияе върху скоростта на вашия уебсайт. Например, ако имате страница с каталог с 20 продукта и всяко изображение на продукта е с размер 1Mb, това прави общо 20Mb за изтегляне, когато страницата се зареди, и това очевидно може да е проблем в някои сценарии (мобилни устройства, ограничена честотна лента в определени региони и т.н.).
Проверете дали изображенията ви са правилно оптимизирани и дали имат добро съотношение между качество и размер. Също така, уверете се, че вашите изображения не са преоразмерени от CSS, но изходният файл е преоразмерен до конкретния размер, от който се нуждаете.
Друга техника е използването на мързеливо зареждане, което означава зареждане на вашите изображения след пълното зареждане на страницата или докато потребителят превърта каталога.
Можете също да използвате AWS или CDN, за да доставяте съдържанието си много по-бързо. Нека да разгледаме набързо разликите между AWS, CDN и традиционния хостинг от гледна точка на растерна оптимизация.
Традиционният начин е да съхранявате вашето съдържание, като изображения, на същия сървър като вашия уебсайт. Това може да отнеме дисково пространство и добра част от вашата честотна лента, създавайки значително натоварване на сървъра. Очевидно мащабирането с традиционния хостинг може да бъде проблем.
Мрежата за доставка на съдържание обикновено се използва за намаляване на натоварването на сървър, като обслужва част от съдържанието на уебсайта. Освен това, той носи висока производителност, като доставя съдържанието ви бързо и висока наличност чрез използване на множество мрежи, за да се обадите.
Amazon CloudFront е изключително защитена мрежа за доставка на съдържание (CDN), която осигурява защита както на ниво мрежа, така и на ниво приложение. Проверете този урок за това как да започнете AWS и доставяйте съдържание по-бързо .
Освен това можете да използвате AWS за преоразмеряване на изображения в движение въз основа на размери, предадени чрез параметър на заявката. За допълнителна информация вижте този урок на Преоразмеряване на изображения с Amazon CloudFront и[имейл защитен] .
Индексаторите на Magento могат да бъдат настроени на два режима: „ Актуализиране на Запазване ' или ' Актуализация по график . '
Когато са настроени на „Актуализиране при запазване“ всеки път, когато запазвате продукт, атрибут или категория, конкретният индекс започва да работи. Индексаторите могат да потребят ресурси и това може да забави сървъра ви.
Най-добрият режим за настройване на индексаторите е „Актуализиране по график“. По този начин сте сигурни, че те се изпълняват от заданието cron в точно определено от вас време. Изберете време, когато трафикът на вашия уебсайт е нисък.
Можете да видите текущия режим на индексатори, като изпълните командата:
php bin/magento indexer:show-mode
Или в Magento Admin, като отидете на:
Система > Управление на индекса
Можете да промените режима на индексатори на „Актуализиране по график“, като изпълните командата:
php bin/magento indexer:set-mode schedule
колко дълго продължава сертифицирането на aws
Можете да промените режима на индексаторите на „Актуализиране при запис“, като изпълните командата:
php bin/magento indexer:set-mode realtime
И ето го в Magento Admin:
Система > Управление на индекса: Изберете всички индексатори и от Действия падащото меню изберете „Актуализиране по график“
Можете също да конфигурирате Планираните задачи, като влезете в Admin, за да:
Съхранявайте > Настройки > Конфигурация > Разширено > Система > Cron (Планирани задачи)
Разгънете „Опции за конфигуриране на Cron за група: индекс“
Gzip е метод за компресиране на файлове за по-бързи мрежови трансфери. Компресията позволява на вашия уеб сървър да предоставя по-малки размери на файловете, които се зареждат по-бързо за потребителите на вашия уеб сайт. Това обаче си струва.
Докато компресирате файл, зареждате процесора и колкото повече компресирате файл, толкова по-дълъг е процесът. Въпреки че това може да увеличи натоварването на процесора на сървъра, това също може значително да намали използването на честотната лента. С gzip можете да избирате между различни нива на компресия, вариращи от 1 до 9.
На ниво 1 имате най-бързото време на компресия, но по-ниско съотношение на компресия. На противоположната страна, на ниво 9 имате най-висока степен на компресия, но по-ниска скорост. Конфигурацията по подразбиране на gzip използва ниво 6, благоприятстващо компресията пред скоростта. Nginx обаче използва ниво 1, благоприятствайки скоростта пред размера на файла.
За да включите gzip компресия и да активирате mod_deflate
модул на Apache, можете да добавите това, като актуализирате вашия .htaccess файл и декомментирате съответните редове, както е показано по-долу. mod_deflate
модул компресира статични ресурси в по-малки файлове, преди да ги прехвърли в браузъра.
############################################ ## enable apache served files compression ## http://developer.yahoo.com/performance/rules.html#gzip # Insert filter on all content SetOutputFilter DEFLATE # Insert filter on selected content types only AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/json image/svg+xml # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch MSIE !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary
Друг начин, по който можете да увеличите скоростта на уебсайта си, е да използвате Elasticsearch за страници в каталога и резултати от търсенето. Настройте вашия сървър Elasticsearch и свържете вашия Magento магазин към него. Търсенето става много по-бързо с помощта на Elasticsearch.
Това официално ръководство обяснява как можете да конфигурирате Magento с Elasticsearch.
За да конфигурирате Magento да използва Elasticsearch влизане в администратора на Magento като администратор:
Обажданията обратно към сървъра след зареждане на страницата могат да доведат до блокиране на сесията. Начинът да проверите за всички обаждания на Ajax, които прави вашата страница, е като използвате DevTools в Chrome. Можете да го отворите, като щракнете с десния бутон върху страницата и изберете Инспектиране.
Отидете в раздела мрежа и там можете да филтрирате заявката по XHR. Сега можете да видите всички заявки на Ajax на страницата и да ги проверите, за да видите кои от тях са необходими на конкретната страница.
Redis е незадължително решение за кеширане на заден план за замяна Zend_Cache_Backend_File
, което се използва в Magento 2 по подразбиране.
Използването на Redis може да има множество предимства:
Има и основен недостатък:
Следва примерна конфигурация, която да се добави към app/etc/env.php
:
'session' => array ( 'save' => 'redis', 'redis' => array ( 'host' => '127.0.0.1', 'port' => '6379', 'password' => '', 'timeout' => '2.5', 'persistent_identifier' => '', 'database' => '2', 'compression_threshold' => '2048', 'compression_library' => 'gzip', 'log_level' => '1', 'max_concurrency' => '6', 'break_after_frontend' => '5', 'break_after_adminhtml' => '30', 'first_lifetime' => '600', 'bot_first_lifetime' => '60', 'bot_lifetime' => '7200', 'disable_locking' => '0', 'min_lifetime' => '60', 'max_lifetime' => '2592000' ) ),
Можете да проверите тук всички подробности за параметрите и как да направите основна проверка, че вашата инсталация на Redis работи добре заедно с вашия Magento.
Има два начина за конфигуриране на Redis за страничен и кеш по подразбиране. Можете ръчно да редактирате app/etc/env.php
файл или можете да използвате командния ред, който е препоръчителният метод, тъй като осигурява и проверка.
За кеша по подразбиране изпълнете командата:
php bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-=...
Посочете параметри, които са специфични за кеширането по подразбиране на Redis.
За кеша на страници изпълнете командата:
Php bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=redis.example.com --page-cache-redis-db=1
Тази команда дава възможност за кеширане на страницата Redis, задава хоста на redis.example.com
и присвоява номера на базата данни на 1. Можете да проверите всички подробности в Magento DevDocs .
Ние разгледахме доста подходи за оптимизиране на производителността на Magento 2, така че нека направим кратко обобщение.
Идентифицирането и решаването на тесни места ще направи огромна разлика при обработката на вашите данни. Използването на кеш на цяла страница и Varnish също ще подобри скоростта на вашия уебсайт и ще ускори HTTP трафика. Винаги трябва да използвате Magento в производствен режим на вашия сървър на живо, без извинения. Използвайте минимизация, за да намалите размера на CSS и JS файлове, по-малкият файл ще се изтегли по-бързо и ще използва по-малко честотна лента.
Активирайте плоски таблици, за да намалите заявките за база данни и да подобрите времето за отговор на базата данни. Оптимизирайте вашите изображения и използвайте CDN, ако е възможно. Настройте индексаторите да се актуализират по график и активирайте Magento cron. Активирането на компресиране на gzip също ще намали размера на файловете за изтегляне. Използването на Elasticsearch ще увеличи скоростта на вашите страници в каталога и страницата с резултати от търсенето ще се зареди много по-бързо. Използвайте Redis за кеш на страници и съхранение на сесии, което е значително по-бързо от стандартния memcache.
Можете да приложите всички тези препоръки или само няколко, които досега не сте използвали. Дори двойка трябва да е достатъчна, за да подобри производителността на Magento, което, надяваме се, трябва да се трансформира в повече реализации.
Magento е модерна платформа за електронна търговия, изградена върху технология с отворен код, която се простира отвъд системата за пазаруване, предлагайки мощни инструменти за B2C, B2B и B2B2C.
Magento е написан на PHP.
Magento Commerce Cloud е управлявана и автоматизирана хостинг платформа за Magento, специално създадена за облачни инфраструктури. Тази версия съчетава Magento Commerce и хостинг на облачна инфраструктура, с няколко разлики и добавени функции.
Magento 2 е проектиран за растеж и е създаден за гъвкавост. Той може да осигури безпроблемно пазаруване, да намали бизнес разходите, да автоматизира повтарящи се задачи и да спести часове ръчни усилия. Също така, като сте пъргави и лесни за ползване, с Magento можете бързо да отидете на пазара.
Използвайте кеш на цяла страница, Varnish и активирайте плоски маси. Използвайте минификация за CSS и JS файлове. Оптимизирайте изображенията и използвайте CDN, ако е възможно. Настройте индексаторите да се актуализират по график. Активирайте Magento cron и gzip компресия. Използвайте Elasticsearch за каталог и търсене. Използвайте Redis за кеш на страници и съхранение на сесии.
Magento 2 се предлага както в безплатна, така и в платена версия. Предлаганите решения са Magento с отворен код и Magento Commerce. Magento с отворен код е безплатен за всички. Magento Commerce е платено решение, което може да бъде хоствано и в собствения облак на Magento, Magento Commerce Cloud.