Magento 2 yra populiari elektroninės prekybos platforma. Vienas iš nusiskundimų, kuriuos girdžiu, yra tai, kad jis lėtas. Svetainių savininkai gali susidurti su lėtais katalogų puslapiais ir nereaguojančiais atsiskaitymais. Prasto našumo priežastys skiriasi nuo netinkamos konfigūracijos iki per daug trečiųjų šalių plėtinių. Šiame straipsnyje pateiksiu septynis praktinius patarimus, kaip užtikrinti, kad jūsų Magento 2 internetinė parduotuvė veiktų greičiau.
1. Naudokite laką kaip talpyklos programą
Lakas yra HTTP tarpinis serveris, galintis talpykloje išsaugoti turinį. Galite įdiegti jį priešais žiniatinklio serverį ir padidinti svetainės našumą. (Galite apsilankyti Varnish svetainėje čia.
„Magento 2“ turi įmontuotą lako palaikymą. Norėdami jį įjungti, turite atlikti du veiksmus:
Eikite į administratoriaus skydelio meniu > Parduotuvės > Konfigūracija > Išplėstinė > Sistema > Viso puslapio talpykla ir nustatyti Talpyklos programa į Lako talpykla.
Tada išplėskite Lako konfigūracijos skirtuką ir eksportuokite VCL failą.
Perduokite šį failą savo sistemos administratoriui arba prieglobos palaikymo komandai. Jie naudos tą failą Varnish demonui konfigūruoti.
2. Įdiekite talpyklos šildytuvą
„Magento 2“ įdiegia viso puslapio talpyklą (FPC), kad serverio atsako laikas būtų trumpas. FPC veikia taip, kad pirmoji užklausa yra lėta, o visos kitos užklausos yra greitos.
Talpyklos šildytuvas yra scenarijus (arba plėtinys), kuris pateikia pirmąsias užklausas. Jis užpildo talpyklos saugyklą, kad vartotojai galėtų mėgautis mažu laiku iki pirmojo baito (TTFB).
Talpyklos šildytuvą galite įdiegti kaip Magento 2 modulį. Yra komercinių ir a nemokamas prieinama.
Arba galite sukurti paprastą PHP scenarijų. Jis sušildys visas kategorijas ir sąrašą su populiariausiais puslapiais:
ini_set('memory_limit','12000M');
use Magento\Framework\App\Bootstrap;
require __DIR__.'/app/bootstrap.php';
$params = $_SERVER;
$bootstrap = Bootstrap::create(BP,$params);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
$categories = $obj->create('Magento\Catalog\Model\ResourceModel\Category\Collection');
$categories->addIsActiveFilter()
->joinUrlRewrite();
foreach($categories as $cat){
$st = microtime(true);
$dd = file_get_contents_ssl($cat->getUrl());
$fn = microtime(true);
if(($fn - $st) > 0.9)
echo $cat->getUrl()." : time: ".($fn - $st)."\n";
sleep(3);
}
$open = fopen("1000-popular-pages.csv","r");
while(($data = fgetcsv($open,4000,",")) !== FALSE){
if(filter_var($data[0],FILTER_VALIDATE_URL) !== FALSE && strpos($data[0],".pdf") === FALSE && strpos($data[0],"https://www.sitepoint.com/blog/") === FALSE){
$st = microtime(true);
$dd = file_get_contents_ssl($data[0]);
$fn = microtime(true);
if(($fn - $st) > 0.9)
echo $data[0]." : time: ".($fn - $st)."\n";
sleep(3);
}
}
fclose($open)
function file_get_contents_ssl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3000);
curl_setopt($ch, CURLOPT_TIMEOUT, 10000);
$result = curl_exec($ch);
if($result === FALSE)
$result = curl_error($ch);
curl_close($ch);
return $result;
}
Populiarių puslapių sąrašas, kurį galite eksportuoti iš „Google Analytics“.
3. Perkelkite „JavaScript“ į puslapio apačią
„JavaScript“ perkėlimas į puslapio apačią pagerins pirmieji patenkinti dažai greičio metrika.
„Magento 2.4+“ turi specialų administratoriaus nustatymą. Galite paleisti komandinę eilutę:
php bin/magento config:set dev/js/move_script_to_bottom 1
Tada išvalykite talpyklą:
php bin/magento cache:flush
Dabar „Magento“ perkels „JavaScript“ į apačią.
4. Konvertuokite vaizdus į WebP formatą
WebP vaizdai užima mažiau vietos diske nei JPEG ir PNG. Jei galime konvertuoti svetainės paveikslėlius į WebP, galime sumažinti puslapio svorį ir pagerinti našumą.
Naudojant specialų cwebp Komandinės eilutės programa galite konvertuoti vaizdą į WebP:
cwebp -q 80 image.png image.webp
į -q
jungiklis nustato kokybės diapazoną. (Mūsų atveju tai yra 80.)
Yra keli Magento 2 moduliai, galintys atlikti šią konversiją. „Adobe Commerce Marketplace“. yra puiki vieta tiems plėtiniams rasti.
5. Įjunkite HTML sumažinimą
HTML sumažinimas padeda sumažinti puslapio svorį ir padidinti greitį.
„Magento 2.4+“ gali sumažinti HTML be papildomų modulių.
Norėdami jį įjungti, turite paleisti šią komandą:
php bin/magento config:set dev/template/minify_html 1
Tada turėsite iš naujo kompiliuoti, kad iš tikrųjų sukurtumėte sumažintus šablonus:
php bin/magento deploy:mode:set production
6. Suspausti ir sujungti JavaScript ir CSS
JS ir CSS failų suspaudimas ir sujungimas padeda sumažinti puslapio svorį. Tai taip pat sumažina HTTP užklausas ir pagreitina svetainę.
Norėdami įjungti sujungimą ir glaudinimą, vykdykite šias komandas:
php bin/magento config:set dev/js/merge_files 1
php bin/magento config:set dev/css/merge_css_files 1
php bin/magento config:set dev/js/minify_files 1
php bin/magento config:set dev/css/minify_files 1
Tada sukompiliuokite iš naujo:
php bin/magento deploy:mode:set production
Ir turėtų veikti.
7. Saugokite ElasticSearch užklausos rezultatus talpykloje
„Magento 2.4+“ naudoja ElasticSearch indeksavimo ir katalogų valdymo variklis.
Norėdami pagreitinti ElasticSearch našumą naudodami didesnius katalogus, užklausų rezultatus galite išsaugoti talpykloje.
Atidaryk vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php
failą ir prie 365 eilutės pridėkite:
@@ -365,6 +365,9 @@ class Connection implements ConnectionInterface
$params
);
+ if(strpos($uri,'search') !== FALSE){
+ $params['request_cache'] = 'true';
+ }
$uri .= '?' . http_build_query($params);
}
Jis įjungs vidinį ElasticSearch užklausų talpyklos mechanizmą.
Išvada
Šiame straipsnyje pateikiau septynis būdus, kaip pagreitinti Magento 2 svetainę:
- naudokite laką kaip viso puslapio talpyklą
- nustatyti talpyklos šildytuvą
- atidėti JavaScript įkėlimą
- konvertuoti visus vaizdus į WebP
- įjunkite HTML sumažinimą
- suspausti ir sujungti JS ir CSS failus
- talpykloje ElasticSearch užklausos rezultatus
Šie veiksmai pagerins serverio atsako laiką ir Pagrindiniai interneto gyvybiniai rodikliai.
Jei turite klausimų ar komentarų, nedvejodami klauskite!