Dlaczego Magento 2 jest wyjątkowo wolny?

31

Użyłem Magento 1.9 i było w porządku. Nie było tak szybkie jak prosta strona Joomla, ale miałem wielu klientów bez problemu.

Teraz chciałem zaktualizować moją witrynę do Magento 2, kupiłem nowy host (taki sam, jaki mam obecnie) i zainstalowałem Magento 2 bez przykładowych danych i jest to uciążliwe w użyciu. Nie tylko administrator, ale także pusta strona główna zajmuje kilka minut do załadowania, a gdy próbuję utworzyć konto, pojawia się błąd, że „Osiągnięto limit zasobów”

Próbowałem z Facebook FlashCache, OptimumCache i Cloudflare, ale nic się nie zmieniło, chociaż twórcy twierdzili, że Magento 2 jest znacznie szybszy niż pierwsza wersja.

Chciałbym zrozumieć, dlaczego nie mogą tego naprawić po tylu latach i dlaczego tak wielu ludzi go używa?

Czy jest jakiś sposób, żeby to naprawić?

AKTUALIZACJA:

Wcześniej korzystałem z mgt-commerce i był niesamowicie szybki, ładowanie trwało mniej niż 2 sekundy, ale kosztowało zbyt wiele: Cena AWS + 199,00 €

Oferowali domyślnie php7 / HHVM, Varnish, Redis, CDN, NGINX i domyślam się, że właśnie dlatego był szybki.

Musiałem kupić konto Amazon WS. Nie wiem, dlaczego chyba moja strona była hostowana przez Amazon.

Szukam tej samej prędkości za niższą cenę. Przykład dostawcy VPS.

Rozglądałem się, ale okazało się, że każdy dostawca hostingu twierdzi, że ma hosting Magento. Siteground, Mochahost, Hostgator, Fastcomet itp.

Być może istnieje dostawca hostingu, który zainstalowałby te pamięci podręczne, aby pokonać konkurencję.

PS: Przepraszam, jeśli mój post wydaje się głupi dla programistów, niestety wybrałem ekonomię, handel i marketing na uniwersytecie :(

petetcap
źródło
Czy możesz wyjaśnić, czego próbowałeś z Facebook FlashCache, OptimumCache i Cloudflare?
mbalparda
1
Wygląda na problem ze środowiskiem. Na mojej
maszynie wirtualnej
wyłącz scalanie css / js sklepów> konfiguracja> zaawansowane> programista zobacz mój komentarz tutaj magento.stackexchange.com/questions/150073/...
Konstantin Gerasimov
2
Zaczynam od M2 i jestem bardzo sfrustrowany jego wydajnością. Jeśli twoje oprogramowanie wymaga tysiąc pamięci podręcznych do uruchomienia dla jednego użytkownika, coś jest nie tak. Mam nadzieję, że wkrótce zmienię zdanie.
Ricardo Martins
@KAndy, czy możesz napisać, z którego vm korzystasz? Jeśli użyjesz włóczęgi, czy można udostępnić skrypt obsługi administracyjnej? Próbowałem kilka maszyn wirtualnych, ale wszystkie nie działały. Instalacja Magento powiodła się, ale strony się nie ładują.
Alan

Odpowiedzi:

24

Dostępnych jest wiele zasobów do poprawy wydajności Magento 2, a wszystkie z nich są dość dobrze udokumentowane.

Tryb: Magento 2 wprowadził tryby, domyślnie najwolniejszy. Wypróbuj tryb programisty i zawsze uruchom sklep na żywo w trybie produkcyjnym. Więcej informacji tutaj .

Pamięć podręczna: lakier jest obsługiwany po wyjęciu z pudełka, dość łatwy w konfiguracji i obsłudze.

Redis: Redis to opcjonalne rozwiązanie pamięci podręcznej zaplecza do zastąpienia Zend_Cache_Backend_File, które jest domyślnie używane w Magento 2. Może być używany do przechowywania sesji i buforowania stron.

Memcache: Memcached to przechowywany w pamięci magazyn kluczy i wartości dla małych porcji dowolnych danych (ciągów, obiektów) z wyników wywołań bazy danych, wywołań API lub renderowania strony. W Magento 2 można go używać do sesji .

PHP 7: Magento 2 jest kompatybilny z PHP 7 po wyjęciu z pudełka. Istnieje wiele badań dotyczących tego, jak PHP 7 wpływa na wydajność na dobre.

To dopiero początek, powinieneś być w stanie dostroić swój serwer WWW i serwer bazy danych, ale będzie to w dużej mierze zależeć od konkretnego przypadku użycia.

Jeśli nie wiesz, jak to zrobić, istnieje wiele firm specjalizujących się w hostingu Magento.

Dla całkiem solidnego środowiska programistycznego moją osobistą rekomendacją jest Vagrant Paliarusha lub VM, które dostałem od Magento na kursy. Już wkrótce oficjalne zdjęcie dokera.

mbalparda
źródło
9

Magento działa dość dobrze nawet w trybie programisty. Wymaga to jednak wstępnej konfiguracji.

Najpierw upewnij się, że Magento jest poprawnie skonfigurowany, zakładając, że masz na Ubuntu:

Użyj najnowszej wersji, ponieważ Magento 2.2+ obsługuje php 7.1 http://devdocs.magento.com/guides/v2.2/install-gde/prereq/php-ubuntu.html

sudo apt-get install php7.1 php7.1-imap php7.1-xml php7.1-dom php7.1-intl

Jeśli korzystasz z wielu wersji php, ustaw 7.1 na domyślną przez

sudo update-alternatives --set php /usr/bin/php7.1

Onto Magento

  1. Ustaw na Deweloper, jeśli jeszcze nie php -f bin/magento deploy:mode:show

    php -f bin/magento deploy:mode:set developer

  2. Sprawdź, czy pamięć podręczna Magento jest włączona

    php -f bin/magento cache:status

Jeśli nie jest włączony (seria 1)

php -f bin/magento cache:enable

Włącz wiązanie JS / CSS

Sklepy> Konfiguracja> Zaawansowane> Deweloper

* Uwaga: powyższy element menu pojawia się tylko w trybie programisty

Ustawienia szablonów

  • Minify HTML = Tak

Ustawienia Javascript

  • Scal pliki JS = Tak

  • Włącz wiązanie JS = Tak

  • Minimalizuj pliki JS = Tak

Ustawienia CSS

  • Scal CSS = Tak
  • Minify CSS = Tak

Wykonuj odtłuszczanie pamięci podręcznej odtąd po każdym kroku opróżniania pamięci podręcznej, to jest twoja podstawowa próba skrócenia czasu ładowania.

php -f bin/magento cache:flush

Zaawansowane wiązanie

Byłby to post sam w sobie zgodny z wytycznymi magdent devdocs, w jaki sposób to włączyć, może to dodatkowo zwiększyć ładowanie JS frontendu, czyniąc go 3 razy szybszym.

Użyj Redis

sudo apt-get update
sudo apt-get install build-essential tcl8.5
sudo apt-get install make
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
cd utils/
sudo ./install_server.sh

Edytuj /www/project/app/etc/env.php

'cache' => 
  array (
    'frontend' => 
    array (
      'default' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'database' => '0',
          'port' => '6379',
        ),
      ),
      'page_cache' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => '1',
          'compress_data' => '0',
        ),
      ),
    ),
  ),

Użyj PHP-FPM

apt-get install php7.1-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.1-fpm
sudo service php7.1-fpm restart
sudo service apache2 restart

Włącz opcache w PHP

Edytuj /etc/php/7.1/apache2/php.ini znajdź opcache.enable

opcache.enable=1

Poleciłbym również użycie Cloud DB, takiego jak AWS RDS lub inny, dzięki czemu zaoszczędzisz problemów związanych z konfigurowaniem mysql.

Jeśli teraz włączysz tryb produkcji php -f bin/magento deploy:mode:set production

powinieneś stwierdzić, że działa dość dobrze.

Idąc dalej, możesz dodać Lakier, Przełącz na Nginx dodać CDN dla plików statycznych.

Joel Davey
źródło
2

Miałem ten problem również na Macbooku Pro (koniec 2016 r.) Z MAMP.

Chciałem stworzyć motyw Magento 2. Dezaktywowałem wszystkie pamięci podręczne i przeładowanie strony (frontendu i backendu) zajęło około 30s.

Aktywowałem wszystkie pamięci podręczne za pomocą polecenia „php magento cache: enable”, a strona ładuje się bardzo szybko. Nadal mogę pracować z Grunt i LESS bez dezaktywowania dowolnego typu pamięci podręcznej.

Klevis Miho
źródło
1

Magento 2 nie jest domyślnie wolny. Aby to zrobić szybko, musisz wykonać następujące kroki:

  1. Wymagania dotyczące serwera i systemu

  2. Zaktualizuj wersję Magento

  3. Włącz pamięć podręczną lakieru

  4. Konfiguruj Memcached

  5. Włącz płaskie kategorie i produkty

  6. Zoptymalizuj Javascript i CSS

  7. Sieć dostarczania treści

  8. Użyj lekkiego motywu

  9. Rozszerzenia wolne od błędów

  10. Obrazy powinny być w pełni zoptymalizowane

Syed Muneeb Ul Hasan
źródło
22
Przykro mi, ale jeśli musisz dodać wiele poziomów buforowania do aplikacji, domyślnie jest ona wolna.
Robert Egginton
Robert: Koleś, dodanie pamięci podręcznej do kilku warstw wielowarstwowego systemu jest właściwym rodzajem architektury. Nie rozmawiamy pamięci podręcznej po pamięci podręcznej ... -o-
cuda
Używanie pamięci podręcznej podczas programowania nie jest tak naprawdę optymalnym rozwiązaniem. Czyszczenie pamięci podręcznej za każdym razem, gdy wprowadzana jest zmiana, przypomina programowanie w skompilowanym języku, a nie PHP.
Alan
0

Jak oceniasz Magento 2 jest wolny? Moja strona, która używa bardzo ciężkiego motywu, ma solidną 93/100 w Szybkości strony, a czas ładowania wynosi 2 sekundy. Powiedziałbym, że zdobądź lepszy host dla Magento, ponieważ twój serwer internetowy odgrywa dużą rolę w wydajności twojej witryny. Jeśli chodzi o tryb „domyślny”, to jest najwolniejszy, w ogóle nie jest prawdziwy. Prowadziłem swój sklep w trybie domyślnym, dopóki nie byłem gotowy, aby przejść do trybu produkcyjnego, który uzyskał 91/100 w trybie domyślnym i przeszedł do 93/100 dopiero po przejściu do trybu produkcyjnego.

Zdobądź lepszy host i lepszy serwer WWW, jeśli naprawdę chcesz korzystać z Magento 2.

James Stubbs
źródło
Po magento cache:disableczasie ładowania wynosi ponad 30 sekund.
Tom Anderson