Optimasi Kinerja Magento Dijelaskan

Diterbitkan: 2022-03-11

Kinerja Magento sangat penting. Kecepatan memuat memiliki dampak langsung dan terukur pada tingkat konversi situs web Anda, oleh karena itu memiliki instalasi Magento yang dioptimalkan sangat penting untuk keberhasilan toko Magento Anda dan bahkan mungkin bisnis Anda secara umum.

Pada artikel ini saya akan menyajikan beberapa cara pengembang Magento dapat mengoptimalkan instalasi Magento 2 mereka, dan menjelaskan cara melakukan hal berikut:

  • Periksa modul pihak ketiga dan temukan kemacetan
  • Aktifkan cache satu halaman penuh
  • Pernis, bukan file untuk cache satu halaman penuh
  • Pastikan cache satu halaman penuh berfungsi, itu bisa dibobol dengan mudah
  • Aktifkan mode Produksi
  • Minifikasi CSS/JS
  • Aktifkan tabel datar
  • Dapatkan hosting tercepat yang Anda mampu
  • Optimalkan gambar
  • Pengindeks untuk "Memperbarui Sesuai Jadwal"
  • Kompresi GZIP
  • Gunakan Elasticsearch pada halaman katalog dan pencarian.
  • Periksa panggilan Ajax yang tidak perlu kembali ke server setelah pemuatan halaman (dapat menyebabkan kunci sesi)
  • Redis untuk cache halaman dan penyimpanan sesi

Periksa Modul Pihak Ketiga dan Temukan Kemacetan

Ada banyak modul Magento pihak ketiga di luar sana dengan kode yang buruk, menggunakan metode yang tidak digunakan lagi, atau memiliki masalah kompatibilitas dengan versi stabil terbaru dari Magento. Cara terbaik untuk mengidentifikasi permintaan berat adalah dengan menggunakan profiler. Itu membantu Anda mengidentifikasi berapa banyak kueri MySQL yang Anda miliki di halaman dan berapa banyak yang identik. Mengetahui hal itu, Anda dapat memadatkan kueri tersebut menjadi satu, dan dengan demikian mempercepat Magento.

Salah satu kesalahan utama yang dilakukan pengembang junior di Magento adalah memuat model di dalam loop. Cobalah untuk menghindari itu sebanyak yang Anda bisa. Muat seluruh koleksi dengan semua yang Anda butuhkan, lalu ulangi. Selalu ingat kompleksitas waktu dan ruang dan bangun algoritme Anda dengan cara yang dioptimalkan.

Bagan kinerja Magento

Lihat bagaimana tata letak Anda dimuat dan blok templat mana yang berkinerja paling lambat, lalu lihat kode itu. Lihat metrik Model CRUD tempat Anda dapat menemukan data yang bermanfaat seperti memuat panggilan ke dalam loop.

Cache halaman penuh Magento

Saat pengguna mengakses toko Anda, permintaan dibuat ke server. Permintaan ini diproses oleh PHP melakukan operasi tertentu dan kueri basis data kemudian mengembalikan HTML yang sesuai untuk ditampilkan kepada pengguna. Cache halaman penuh menyimpan respons HTML itu, sehingga permintaan identik berikutnya akan langsung mengembalikannya dengan melewatkan semua pemrosesan back-end dan kueri basis data. Hal ini membuat respon website jauh lebih cepat.

Menggunakan cache satu halaman penuh sebagai bagian dari upaya pengoptimalan Magento Anda dapat sangat meningkatkan kecepatan situs web Anda. Ini akan membuat versi cache halaman Anda dan akan mengirimkannya ke pengguna alih-alih menjalankan semua kueri untuk setiap permintaan. Tentu saja, tidak semua halaman di-cache. Misalnya, halaman keranjang tidak akan di-cache, jika tidak, semua pengguna akan melihat versi halaman yang di-cache pertama. Ini adalah halaman dinamis atau bagian halaman yang khusus untuk pengguna dan sesi.

Untuk mengaktifkan cache halaman penuh Magento, Anda dapat menjalankan perintah CLI berikut:

php bin/magento cache:enable full_page

Untuk mengaktifkan jenis cache, Anda dapat menjalankan perintah CLI:

php bin/magento cache:enable

Anda juga dapat melakukannya dari Admin Magento dengan masuk sebagai administrator:

  1. Buka Sistem > Alat > Manajemen Cache
  2. Pilih Jenis Cache yang ingin Anda aktifkan
  3. Di tarik-turun Tindakan pilih Aktifkan dan klik Kirim

Tangkapan layar pengoptimalan kinerja Magento

Gunakan Pernis untuk Cache Halaman Penuh

Saat mengaktifkan cache satu halaman penuh, gunakan Varnish untuk menanganinya, bukan file. Magento sangat menyarankan menggunakan Varnish (atau Redis) dalam produksi. Caching halaman penuh terintegrasi (baik ke sistem file atau database) jauh lebih lambat daripada Varnish, dan Varnish dirancang untuk mempercepat lalu lintas HTTP.

Anda dapat menemukan panduan lengkap tentang cara menginstal dan mengonfigurasi Varnish di dokumentasi resmi Magento 2.

Untuk mengonfigurasi Magento agar menggunakan Varnish, masuk ke Admin Magento sebagai administrator:

  1. Buka Toko > Konfigurasi > Lanjutan > Sistem > Cache Halaman Penuh
  2. Dari daftar Aplikasi Caching , klik Varnish Caching
  3. Masukkan nilai di bidang TTL untuk konten publik
  4. Perluas Konfigurasi Varnish dan masukkan informasi spesifik tentang konfigurasi Varnish Anda

Tangkapan layar cache halaman penuh pengoptimalan kinerja Magento

Pastikan Cache Sehalaman Penuh Berfungsi: Mudah Rusak

Cache halaman penuh dapat dengan mudah dipecahkan di Magento 2. Misalnya, Jika Anda ingin mengecualikan blok dari cache, jangan gunakan atribut cacheable="false" dalam tata letak XML saat mendeklarasikan blok Anda. Ini akan menonaktifkan cache untuk seluruh halaman yang berisi blok itu, tidak hanya untuk blok itu. Itu adalah kesalahan yang saya lihat dilakukan orang.

Cari atribut cacheable="false" di tata letak Anda dan lihat di blok mana mereka disetel dan di halaman mana blok itu dipanggil. Dengan demikian, Anda dapat mengidentifikasi apakah halaman sepele memiliki masalah dengan cache.

Anda juga dapat menguji apakah halaman Anda di-cache secara manual atau tidak. Letakkan toko dalam Mode Pengembang di lingkungan lokal atau panggung Anda:

  1. Hapus cache Magento
  2. Muat halaman di browser
  3. Periksa header halaman di tab jaringan debug browser Anda.
  4. Cari X-Magento-Cache-Debug: MISS
  5. Segarkan halaman, itu harus berubah menjadi HIT

Jika tidak berubah menjadi HIT berarti halaman tidak di-cache dan cache tidak berfungsi.

Jangan Lupa Aktifkan Mode Produksi

Magento memiliki tiga mode berjalan, default , developer , dan mode produksi .

Mode produksi dimaksudkan untuk diterapkan pada sistem produksi. Mode ini menyembunyikan pengecualian, menyajikan file statis hanya dari cache dan tidak memungkinkan Anda untuk mengaktifkan atau menonaktifkan jenis cache di Admin Magento. Ini juga mencegah kompilasi file kode otomatis.

Saat bekerja dan mengembangkan toko, mode pengembang aktif. Jangan lupa untuk beralih ke mode produksi saat Anda menerapkan situs Anda ke server langsung!

Perintah CLI untuk melihat mode saat ini adalah:

php bin/magento deploy:mode:show

Perintah CLI untuk beralih ke mode produksi adalah:

php bin/magento deploy:mode:set production

Perintah CLI untuk beralih ke mode pengembang adalah:

php bin/magento deploy:mode:set developer

Anda dapat menemukan informasi lebih detail tentang berbagai mode Magento di sini.

Minifikasi CSS/JS

Memperkecil file CSS dan JS adalah elemen penting dari pengoptimalan kecepatan Magento 2. Dengan mengecilkannya, kami menghapus semua spasi, tab, dan baris baru dalam file. File yang dihasilkan akan memiliki lebih sedikit karakter dan dengan demikian ukurannya lebih kecil, sehingga mereka akan mengunduh lebih cepat.

Magento memiliki fitur ini bawaan dan Anda dapat mengaktifkan minifikasi CSS/JS di Admin. Untuk mengaktifkan minifikasi JavaScript, ikuti langkah-langkah berikut:

  1. menempatkan Magento pada mode produksi
  2. Buka Toko > Konfigurasi > Lanjutan > Pengembang
  3. Setel opsi Perkecil File Javascript ke Ya
  4. Simpan Konfigurasi
  5. Siram Cache di Sistem > halaman Manajemen Cache

Tangkapan layar mode produksi Magento

Untuk mengaktifkan minifikasi CSS, langkah-langkah berikut diperlukan:

  1. menempatkan Magento pada mode produksi
  2. Buka Toko > Konfigurasi > Lanjutan > Pengembang > Pengaturan CSS
  3. Setel opsi Perkecil File CSS ke Ya
  4. Simpan Konfigurasi
  5. Siram Cache di Sistem > halaman Manajemen Cache

Tangkapan layar minifikasi CSS Magento

Catatan: Jangan gabungkan file JS – cukup perkecil saja .

Aktifkan Tabel Datar

Magento menggunakan Model EAV (nilai atribut entitas) yang menyimpan atribut entitasnya dalam beberapa tabel tergantung pada jenis nilainya. Menggunakan beberapa tabel, bergabung dan meminta pada beberapa tabel diperlukan untuk mengambil data, yang dapat memperlambat kueri.

Magento memiliki opsi untuk menggunakan tabel datar untuk katalog dan produk. Tabel datar dibuat dengan menggabungkan semua atribut entitas menjadi satu tabel. Saat meminta data, kita perlu meminta satu tabel, membuatnya lebih cepat.

Magento menghasilkan dan memperbarui tabel datar pada setiap indeksasi. Anda dapat mengaktifkan tabel datar dengan masuk ke Admin Magento sebagai administrator:

  1. Buka Toko > Konfigurasi > Katalog > Katalog > Etalase
  2. Pilih Ya untuk Gunakan Kategori Katalog Datar
  3. Pilih Ya untuk Menggunakan Produk Katalog Datar
  4. Simpan Konfigurasi

Tangkapan layar meja datar Magento

Pilih Hosting Magento Cepat

Lihat persyaratan minimum Magento dan lihat apakah server Anda memenuhinya. Anda dapat melihat persyaratan tumpukan teknologi Magento 2.2.x resmi di sini.

Konfigurasi hosting sangat penting untuk kinerja Magento 2. Ada juga layanan hosting khusus untuk Magento, meskipun ini bisa lebih tentang pemasaran daripada yang lainnya.

Intinya: Dapatkan solusi hosting tercepat yang Anda mampu kecuali itu berlebihan untuk proyek Anda.

Optimasi Gambar Magento

Ukuran gambar Anda jelas memengaruhi kecepatan situs web Anda. Misalnya, jika Anda memiliki halaman katalog dengan 20 produk dan setiap gambar produk berukuran 1Mb, itu berarti total 20Mb untuk diunduh saat halaman dimuat, dan ini jelas dapat menjadi masalah dalam beberapa skenario (perangkat seluler, bandwidth terbatas di wilayah tertentu, dll.).

Periksa apakah gambar Anda dioptimalkan dengan benar dan apakah mereka memiliki rasio yang baik antara kualitas dan ukuran. Juga, pastikan gambar Anda tidak diubah ukurannya oleh CSS tetapi file sumber diubah ukurannya ke ukuran tertentu yang Anda butuhkan.

Teknik lain adalah dengan menggunakan lazy loading, yang berarti memuat gambar Anda setelah halaman dimuat penuh, atau saat pengguna menggulir katalog.

Anda juga dapat menggunakan AWS atau CDN untuk mengirimkan konten Anda lebih cepat. Mari kita lihat sekilas perbedaan antara AWS, CDN, dan hosting tradisional dari perspektif pengoptimalan bitmap.

Hosting tradisional

Cara tradisional adalah menyimpan konten Anda seperti gambar di server yang sama dengan situs web Anda. Ini dapat menghabiskan ruang disk dan sebagian besar bandwidth Anda, menciptakan beban server yang besar. Jelas, penskalaan dengan hosting tradisional bisa menjadi masalah.

CDN (Jaringan Pengiriman Konten)

Jaringan pengiriman konten biasanya digunakan untuk mengurangi beban server dengan menyajikan beberapa konten situs web. Selain itu, ini menghadirkan kinerja tinggi dengan mengirimkan konten Anda dengan cepat dan ketersediaan tinggi dengan menggunakan banyak jaringan untuk dihubungi.

AWS (Amazon CloudFront)

Amazon CloudFront adalah Content Delivery Network (CDN) yang sangat aman yang menyediakan perlindungan tingkat jaringan dan aplikasi. Lihat tutorial ini tentang cara memulai AWS dan mengirimkan konten lebih cepat.

Selain itu, Anda dapat menggunakan AWS untuk mengubah ukuran gambar dengan cepat berdasarkan dimensi yang diteruskan melalui parameter kueri. Untuk informasi tambahan, lihat tutorial ini tentang Mengubah Ukuran Gambar dengan Amazon CloudFront dan Lambda@Edge.

Setel Pengindeks ke “Perbarui sesuai Jadwal”

Pengindeks Magento dapat diatur ke dua mode: " Update on Save " atau " Update on Schedule ."

Ketika mereka disetel ke "Perbarui saat Simpan" setiap kali Anda menyimpan produk, atribut, atau kategori, indeks tertentu mulai berjalan. Pengindeks dapat memakan sumber daya dan mungkin memperlambat server Anda.

Mode terbaik untuk mengatur pengindeks adalah "Perbarui pada Jadwal". Dengan cara ini, Anda yakin bahwa mereka dieksekusi oleh tugas cron pada waktu tertentu yang Anda tetapkan. Pilih waktu ketika lalu lintas di situs web Anda rendah.

Anda dapat melihat mode pengindeks saat ini dengan menjalankan perintah:

php bin/magento indexer:show-mode

Atau di Admin Magento dengan membuka:

Sistem > Manajemen Indeks

Anda dapat mengubah mode pengindeks menjadi "Perbarui pada Jadwal" dengan menjalankan perintah:

php bin/magento indexer:set-mode schedule

Anda dapat mengubah mode pengindeks ke "Perbarui saat Simpan" dengan menjalankan perintah:

php bin/magento indexer:set-mode realtime

Dan ini dia di Admin Magento:

Sistem > Manajemen Indeks: Pilih semua pengindeks dan dari dropdown Tindakan pilih "Perbarui pada Jadwal"

teks alternatif gambar

Anda juga mengonfigurasi Tugas Terjadwal dengan masuk ke Admin untuk:

Simpan > Pengaturan > Konfigurasi > Lanjutan > Sistem > Cron (Tugas Terjadwal)

Luaskan "Opsi konfigurasi Cron untuk grup: indeks"

Dialog konfigurasi cron Magento

Kompresi GZIP

Gzip adalah metode mengompresi file untuk transfer jaringan yang lebih cepat. Kompresi memungkinkan server web Anda untuk menyediakan ukuran file yang lebih kecil yang memuat lebih cepat untuk pengguna situs web Anda. Namun, ini datang dengan biaya.

Saat mengompresi file, Anda memuat CPU, dan semakin banyak Anda mengompresi file, semakin lama prosesnya. Meskipun ini dapat meningkatkan beban CPU server, ini juga dapat secara substansial mengurangi penggunaan bandwidth. Dengan gzip, Anda dapat memilih di antara berbagai tingkat kompresi, mulai dari 1 hingga 9.

Pada level 1 Anda memiliki waktu kompresi tercepat, tetapi rasio kompresi lebih rendah. Di sisi yang berlawanan, pada level 9 Anda memiliki tingkat kompresi tertinggi tetapi kecepatan lebih rendah. Konfigurasi default gzip menggunakan level 6, lebih menyukai kompresi daripada kecepatan. Nginx meskipun menggunakan level 1, lebih menyukai kecepatan daripada ukuran file.

Untuk mengaktifkan kompresi gzip dan mengaktifkan modul mod_deflate Apache, Anda dapat menambahkan ini dengan memperbarui file .htaccess Anda dan menghapus komentar pada baris yang sesuai seperti yang ditunjukkan di bawah ini. Modul mod_deflate memampatkan sumber daya statis menjadi file yang lebih kecil sebelum mentransfernya ke browser.

 <IfModule mod_deflate.c> ############################################ ## 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 \bMSIE !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 </IfModule>

Gunakan Elasticsearch pada Halaman Katalog dan Pencarian

Cara lain untuk meningkatkan kecepatan situs web Anda adalah dengan menggunakan Elasticsearch untuk halaman katalog dan hasil pencarian. Siapkan server Elasticsearch Anda dan hubungkan toko Magento Anda ke sana. Pencarian menjadi lebih cepat dengan menggunakan Elasticsearch.

Panduan resmi ini menjelaskan bagaimana Anda dapat mengonfigurasi Magento dengan Elasticsearch.

Untuk mengonfigurasi Magento agar menggunakan Elasticsearch, masuk ke Admin Magento sebagai administrator:

  1. Klik Toko > Setelan > Konfigurasi > Katalog > Katalog > Pencarian Katalog .
  2. Dari daftar Mesin Pencari , klik Elasticsearch atau Elasticsearch 5.0+ seperti yang ditunjukkan gambar berikut. (Opsi Elasticsearch 5.0+ tidak tersedia untuk Magento 2.1.)

Menyiapkan Elasticsearch di Magento

Periksa Panggilan Ajax yang Tidak Perlu

Panggilan kembali ke server setelah pemuatan halaman dapat menyebabkan penguncian sesi. Cara untuk memeriksa semua panggilan Ajax yang dilakukan halaman Anda adalah dengan menggunakan DevTools di Chrome. Anda dapat membukanya dengan klik kanan pada halaman dan memilih Inspect.

Buka tab jaringan dan di sana Anda dapat memfilter permintaan berdasarkan XHR. Sekarang Anda dapat melihat semua permintaan Ajax dari halaman dan memeriksanya untuk melihat mana yang diperlukan pada halaman tertentu.

Panggilan Ajax di Magento

Redis untuk cache halaman dan penyimpanan sesi

Redis adalah solusi cache back-end opsional untuk menggantikan Zend_Cache_Backend_File , yang digunakan di Magento 2 secara default.

Mengapa Menggunakan Redis?

Menggunakan Redis dapat memiliki banyak keuntungan:

  • Anda dapat mengganti memcached dengan Redis karena dapat digunakan juga untuk penyimpanan sesi PHP.
  • Redis mendukung penyimpanan di disk dan replikasi master/slave, yang merupakan fitur yang sangat diminta yang tidak didukung oleh memcached. Replikasi menghindari satu titik kegagalan dan menyediakan ketersediaan tinggi.
  • Operasi tag tidak memerlukan pemindaian penuh setiap file cache karena Redis bekerja dengan mengindeks tag dalam file.
  • Back-end mendukung pembersihan cache berbasis tag tanpa loop foreach.

Ada juga kelemahan utama:

  • Karena Redis adalah penyimpanan di dalam memori, semua data Anda harus masuk ke dalam memori, artinya hanya dibatasi oleh kecepatan dan kapasitas RAM.

Konfigurasikan Magento untuk menggunakan Redis untuk penyimpanan sesi

Berikut ini adalah contoh konfigurasi untuk ditambahkan ke <your Magento install dir>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' ) ),

Anda dapat memeriksa di sini semua detail tentang parameter, dan bagaimana melakukan verifikasi dasar bahwa instalasi Redis Anda berfungsi dengan baik bersama dengan Magento Anda.

Konfigurasikan Magento untuk Menggunakan Redis untuk Halaman dan Cache Default

Ada dua cara untuk mengkonfigurasi Redis untuk halaman dan cache default. Anda dapat mengedit file <Magento install dir>app/etc/env.php secara manual atau Anda dapat menggunakan baris perintah, yang merupakan metode yang disarankan karena juga menyediakan validasi.

Untuk cache default jalankan perintah:

php bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-<parameter_name>=<parameter_value>...

Tentukan parameter yang khusus untuk cache default Redis.

Untuk cache halaman jalankan perintah:

Php bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=redis.example.com --page-cache-redis-db=1

Perintah ini mengaktifkan cache halaman Redis, menyetel host ke redis.example.com dan menetapkan nomor database ke 1. Anda dapat memeriksa semua detail di Magento DevDocs.

Ringkasan Optimasi Kinerja Magento

Kami telah membahas beberapa pendekatan untuk pengoptimalan kinerja Magento 2, jadi mari kita rekap cepat.

Mengidentifikasi dan memecahkan kemacetan akan membuat perbedaan besar dalam memproses data Anda. Menggunakan cache satu halaman penuh dan Varnish juga akan meningkatkan kecepatan situs web Anda dan mempercepat lalu lintas HTTP. Anda harus selalu menggunakan Magento pada mode produksi di server langsung Anda, tanpa alasan. Gunakan minifikasi untuk mengurangi ukuran file CSS dan JS, file yang lebih kecil akan mengunduh lebih cepat dan menggunakan lebih sedikit bandwidth.

Aktifkan tabel datar untuk mengurangi permintaan database dan meningkatkan waktu respons database. Optimalkan gambar Anda dan gunakan CDN jika memungkinkan. Atur pengindeks untuk memperbarui sesuai jadwal dan aktifkan cron Magento. Mengaktifkan kompresi gzip juga akan mengurangi ukuran file yang akan diunduh. Menggunakan Elasticsearch akan meningkatkan kecepatan halaman katalog Anda dan halaman hasil pencarian akan dimuat lebih cepat. Gunakan Redis untuk cache halaman dan penyimpanan sesi yang secara signifikan lebih cepat daripada memcache default.

Anda dapat menerapkan semua rekomendasi ini atau hanya beberapa yang belum Anda gunakan sejauh ini. Bahkan beberapa sudah cukup untuk meningkatkan kinerja Magento, yang diharapkan akan berubah menjadi lebih banyak konversi.