Meningkatkan Kinerja Drupal 9 dengan modul, praktik pengkodean terbaik, dan konfigurasi server yang tepat

Diterbitkan: 2020-08-11

Anda dapat memiliki server paling kuat dengan memori yang menumpuk, tetapi apakah itu cukup untuk memastikan situs web berkinerja tinggi? Dengan Drupal, penskalaan situs web yang selaras dengan pertumbuhan bisnis Anda menjadi mudah. Faktanya, itulah keunggulan Drupal. Namun, peningkatan mendadak pada halaman web, fungsionalitas, dan konten dapat memengaruhi kinerjanya. Drupal 9 ada di sini sekarang dan siap untuk menghadapi tantangan ini seperti seorang profesional! Muncul dengan kebaikan Drupal 8 minus kode lama yang membuatnya lebih ramping, lebih bersih dan lebih kuat. Jelajahi lebih lanjut tentang teknik peningkatan kinerja Drupal 9 yang benar-benar berfungsi.

Kinerja website adalah kunci sukses bisnis. Situs web yang memuat lambat bisa berbahaya bagi bisnis. Sebuah situs web dengan kinerja yang lebih baik membantu dalam SEO yang lebih baik, meningkatkan tingkat konversi pengunjung dan memberikan pengalaman pengguna yang lebih baik kepada pengunjung yang secara kolektif membantu dalam pertumbuhan bisnis. Sementara situs web yang memuat lambat justru sebaliknya dan menjadi alasan kegagalan bisnis.

drupal-9-pengoptimalan kinerja


Ada banyak hal yang mempengaruhi kinerja website. Beberapa dari mereka adalah:

• Penyedia layanan Anda (Hosting, DNS, dll.)
• Jumlah permintaan ke server
• Masalah teknis atau praktik pemrograman yang buruk
• Teknik cache
• Konfigurasi server yang tidak tepat
• File gambar dan video yang berat

Drupal 9 Core dan Modul Kustom untuk meningkatkan Performa

Ada banyak modul inti dan kontribusi yang tersedia di Drupal 9 yang dapat membantu dalam meningkatkan kinerja situs web Anda. Dengan mengikuti praktik pengkodean tertentu dan dengan konfigurasi server yang tepat, Anda dapat meningkatkan kinerja situs secara drastis.

Modul Inti

• Pipa Besar

Modul Drupal Big Pipe membuat segalanya lebih cepat tanpa konfigurasi tambahan. Itu datang dikemas dengan inti Drupal. Ini meningkatkan kinerja yang dirasakan frontend dengan menggunakan metadata cacheability dan dengan demikian meningkatkan pipa rendering.

• Tembolok Halaman Dinamis Internal

Modul Drupal 9 ini membantu men-cache konten dinamis. Ini sangat membantu untuk pengguna anonim & diautentikasi. Modul ini tidak tersedia di Drupal 7. Halaman yang diminta oleh pengguna disimpan pertama kali diminta dan kemudian dapat digunakan kembali ketika halaman yang sama diminta lebih lanjut.


• Tembolok Halaman Internal

Modul Cache Halaman Internal membantu menyimpan data untuk pengguna anonim. Modul ini tersedia dalam inti dan diaktifkan secara default.

Jalur Konfigurasi: admin/config/pengembangan/kinerja

Di sini Anda dapat menghapus cache, mengatur usia maksimum cache browser dan proxy dan mengaktifkan / menonaktifkan pengaturan agregasi.

Advagg-modul
Modul Cache Halaman Internal

Modul Kontribusi

  • Agregasi CSS/JS Tingkat Lanjut

    Modul Advagg hadir dengan banyak submodul lainnya, seperti -
  • AdvAgg Cdn: Membantu memuat aset (CSS/JS) dari CDN publik
  • AdvAgg CSS/JS Validator: Memvalidasi file CSS dan JS
  • AdvAgg External Minifier: Mengecilkan Javascript dan/atau CSS dengan minifier baris perintah.
  • AdvAgg Minify CSS : Membantu mengecilkan file css dengan minifier pihak ke-3
  • AdvAgg Minify JS : Membantu mengecilkan file js dengan mi pihak ke-3
  • AdvAgg Modifier : Memungkinkan seseorang untuk mengubah array CSS dan JS. (Mungkin memiliki masalah kompatibilitas)
  • AdvAgg Peningkat Kompatibilitas Internet Explorer Lama

Jalur Konfigurasi: /admin/config/development/performance/advagg

Modul ini juga mendukung teknik kompresi file seperti gzip dan brotli . Modul ini membantu mengurangi jumlah permintaan http, sehingga meningkatkan kinerja situs secara signifikan.

  • Blazy

Modul Drupal 9 Blazy menyediakan pemuatan gambar yang lambat untuk menghemat bandwidth dan menghindari rasio pentalan yang lebih tinggi. Lazy loading adalah teknik yang memuat gambar hanya ketika berada di area yang terlihat oleh pengguna. Teknik multi-servis ini menghemat waktu dan data.

Jalur konfigurasi: /admin/config/media/blazy

Di sini Anda dapat mengaktifkan/menonaktifkan Blazy, mengonfigurasi efek placeholder dan juga dapat mengatur offset yang menentukan seberapa awal gambar akan terlihat oleh pengguna.

Modul nyala

Modul nyala
  • CDN

Modul CDN Drupal 9 membantu integrasi CDN dengan mudah di situs web Drupal. Ini membantu untuk menyajikan konten statis dari server CDN untuk meningkatkan kecepatan pengiriman konten. Selain itu, modul ini juga mudah dikonfigurasi.

Jalur konfigurasi: /admin/config/services/cdn

CDN-Modul
Pengaturan Modul CDN

Di sini Anda dapat mengaktifkan/menonaktifkan CDN, menyediakan URL pemetaan, dan mencentang/menghapus centang untuk cache file selamanya.

Peningkatan Kinerja dengan Praktik Pengkodean Terbaik

  • Menggunakan isset() lebih dari array_key_exist()

metode isset() secara signifikan lebih cepat daripada array_key_exist() . Perbedaan utama antara isset dan array_key_exist adalah bahwa array_key_exists pasti akan memberi tahu Anda jika ada kunci dalam array. Sedangkan isset hanya akan mengembalikan nilai true jika kunci/variabelnya ada dan bukan null. Untuk informasi lebih lanjut tentang ini, periksa di sini untuk perbandingan benchmark.

  • Menggunakan entitasQuery()

entitasQuery() bergantung pada pengontrol penyimpanan untuk menangani pembuatan dan eksekusi kueri untuk penyimpanan entitas yang sesuai. Ini memiliki keuntungan bahwa setiap kueri yang dijalankan melalui entityQuery() tidak bergantung pada penyimpanan. Jadi, jika Anda menulis modul kontribusi atau mengerjakan situs web yang mungkin perlu dipindahkan ke penyimpanan entitas alternatif di masa mendatang, semua kueri Anda akan menggunakan backend penyimpanan baru secara transparan tanpa perubahan apa pun. entityQuery() dapat digunakan baik Anda menulis kueri secara manual dalam kode khusus atau melalui backend Tampilan entityQuery() .

  • Menggunakan metode loadMultiple() alih-alih mengulang

Jika Anda memiliki 10 nid (id node) dan Anda mengulanginya untuk memuat setiap node, Anda membuat 10 kueri ke database. Saat menggunakan loadMultiple() itu direduksi menjadi hanya satu kueri basis data.

  • Cache

Menggunakan Cache API di Drupal 9, Anda dapat men-cache renderer, array respons, atau objek. Ada tiga metadata caching renderability yang tersedia di Drupal 9.

  1. Tag cache

    Tag Cache digunakan untuk menyimpan data ketika bergantung pada entitas atau konfigurasi Drupal. Sintaks untuk ini adalah cache-item:identifier misalnya simpul:5, pengguna:3.
  2. Konteks cache

    Sintaksis:
    • periode memisahkan orang tua dari anak
    • konteks cache yang diberi nama jamak menunjukkan parameter dapat ditentukan; untuk menggunakan: tambahkan titik dua
    Contoh: user.roles, user.roles:anonymous, dll.
  3. Usia maksimum cache

Cache max-age digunakan untuk menyimpan data sensitif waktu.

  • Pekerja antrian / Batch

Untuk memproses data dalam jumlah besar tanpa php time out, pemrosesan batch atau pekerja antrian dapat digunakan. Item dalam pekerja antrian hanya berjalan ketika cron berjalan dan itu berjalan untuk sedikit waktu. Ada dua jenis pekerja antrian: dapat diandalkan dan tidak dapat diandalkan. Pekerja antrian yang andal memastikan bahwa item dalam antrian berjalan setidaknya sekali, sedangkan antrian yang tidak dapat diandalkan dapat melewatkan item karena kegagalan memori atau gangguan lainnya. Pemrosesan batch memproses item sampai semua item selesai dalam batch yang dikondisikan sehingga tidak ada kesalahan yang terjadi selama pemrosesan tanpa menunggu cron run.

Meningkatkan Kinerja dengan Konfigurasi Server yang lebih baik

  • Menggunakan Nginx alih-alih Apache

Nginx dan Apache, keduanya adalah server web yang banyak digunakan. Nginx memiliki keunggulan atas Apache pada tolok ukur kinerja. Ini juga lebih cepat dan lebih efisien daripada apache. Nginx berkinerja 2,5 kali lebih cepat dari Apache menurut uji benchmark yang menjalankan hingga 1.000 koneksi simultan.

  • HTTP/2.0 melalui HTTP/1.1

HTTP/2.0 mendukung multiplexing, tidak seperti HTTP/1.1 yang memblokir sumber daya lain. Jika satu sumber daya tidak dapat dimuat, HTTP/2.0 menggunakan koneksi TCP untuk mengirim beberapa aliran data sekaligus. HTTP/2.0 menggunakan teknik kompresi tajuk tingkat lanjut daripada HTTP/1.1

 Konfigurasi Nginx untuk HTTP/2.0
server {
    dengarkan 443 ssl http2; //pengaturan http2
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
}
  • Melayani Konten Terkompresi

 Mengompresi tanggapan sering kali secara signifikan mengurangi ukuran data yang dikirimkan. Namun, karena kompresi terjadi saat runtime, ini juga dapat menambah overhead pemrosesan yang cukup besar yang dapat berdampak negatif pada kinerja. 
Konfigurasi Nginx untuk menyajikan konten terkompresi:
server {
    gzip aktif;
    gzip_static aktif;    
    teks gzip_types/teks biasa/aplikasi css/aplikasi json/teks x-javascript/aplikasi xml/aplikasi xml/xml+teks rss/javascript;
    gzip_proksi apa saja;
    gzip_vary aktif;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_versi 1.1;    
    ...
}
  • MariaDB bukan MySQL

mariaDB telah meningkatkan kecepatan dibandingkan dengan MySQL. Ini menyediakan caching dan pengindeksan lebih cepat daripada MySQL. Ini hampir 24% lebih cepat dari MySql dalam hal ini. Ada metrik kunci lain juga di mana mariaDB lebih baik daripada MySQL. Jadi, MariaDb lebih disukai daripada MySQL dalam hal kinerja.

  • CDN

CDN adalah singkatan dari jaringan pengiriman konten. Ini adalah sekelompok server yang tersebar di seluruh dunia (alias, titik kehadiran, atau PoP), yang bekerja sama untuk mengirimkan konten lebih cepat. CDN menyimpan versi cache dari konten situs dan mengirimkan konten dari server terdekat yang tersedia. Beberapa penyedia CDN populer adalah Cloudflare, Amazon cloudfront, Google cloud cdn dll.