Strategi Kinerja WordPress

Performa WordPress dicontohkan dengan ikan yang sedang berenang
Daftar Isi

Pada saat ini, Anda mungkin telah menemukan banyak sekali artikel tentang optimasi performa WordPress, banyak di antaranya berisi tips-tips lama yang sama. Akan sangat menjengkelkan jika Anda terus menerus menemukan rekomendasi yang tidak efektif tanpa membuat kemajuan apa pun.

Jika Anda merasa kewalahan dan kehabisan pilihan, langkah-langkah berikut ini dapat memberikan jalan keluar. Ini adalah strategi yang sama yang kami terapkan secara default pada setiap situs yang kami hosting, yang mencakup pendekatan komprehensif kami untuk pengoptimalan performa. Meskipun kami mempelajari secara spesifik infrastruktur kami, prinsip-prinsip ini dapat diadaptasi agar sesuai dengan hampir semua lingkungan hosting.

Satu aturan yang cenderung kami ikuti adalah bahwa segala sesuatunya tidak perlu dioptimalkan. Misalnya, dengan Google Font, jika Anda perlu melakukan begitu banyak pekerjaan untuk membuatnya berkinerja baik, mungkin Anda harus mempertimbangkan apakah Anda benar-benar membutuhkannya sejak awal.

Dengan semangat ini, kita akan mulai dengan menonaktifkan beberapa fitur WordPress yang memiliki potensi sebenarnya.

0. Reset WordPress:

1. Nonaktifkan WP Cron.

WordPress tidak memiliki fitur cron yang tepat - seperti yang Anda miliki di server Linux - alih-alih menggunakan fungsi yang dipicu setiap kali ada serangan pada server web.

Solusi yang jauh lebih baik adalah menggunakan layanan eksternal untuk memicu cron untuk instalasi WordPress Anda. Di sini, di Raybeam kami menggunakan layanan cron-job.org layanan, memecat pekerjaan setiap 5 menit. Proses yang dipicu oleh cron mungkin membutuhkan waktu untuk menyelesaikannya, jadi harus ada jeda yang wajar di antara keduanya.

Menonaktifkan WP Cron dilakukan dengan memasukkan konstanta berikut di wp-config.php file:

define( 'DISABLE_WP_CRON', true );

Penting untuk memeriksa apakah cron eksternal Anda benar-benar berjalan dan plugin yang bagus untuk melakukannya adalah Cron Logger.

2. Menonaktifkan atau membatasi Revisi Pasca

Post Revisions menyimpan setiap perubahan yang Anda lakukan pada setiap postingan di WordPress, dan hal ini dapat terakumulasi pada database Anda. Aturlah ke nilai yang dapat Anda gunakan dengan nyaman atau nonaktifkan dengan konstanta berikut ini di wp-config.php file:

define( 'WP_POST_REVISI', '0' );

Anda juga dapat mengatur revisi tak terbatas dengan “-1” dan mengaturnya - dengan bantuan plugin - untuk secara otomatis dihapus setelah waktu yang ditentukan, sesuatu yang akan kita bahas nanti.

3. Nonaktifkan Trackback dan Pingback

Pingback merupakan gangguan dan menciptakan kekacauan yang tidak perlu pada instalasi Anda. Anda dapat menonaktifkannya di pengaturan Diskusi di Dasbor dan juga menambahkan kode berikut ini ke file functions.php di tema Anda atau mu-plugin kustom untuk menonaktifkan pingback otomatis:

function wpsites_disable_self_pingbacks( &$links ) {
  foreach ($links as $l => $link)
        if ( 0 === strpos( $link, get_option( 'home' ) ) )
            unset($links[$l]);
}

add_action( 'pre_ping', 'wpsites_disable_self_pingbacks' );

Cuplikan kode yang disediakan oleh Kinsta.

4. Nonaktifkan Modal P

Ada filter yang aneh - untuk sedikitnya - di WordPress yang mencegah Anda menulis kata WordPress without a capital P, like so: WordPress

Anda dapat menghapusnya dengan fungsi berikut ini:

remove_filter( 'the_content', 'capital_P_dangit', 11 );
remove_filter( 'judul', 'kapital_P_dangit', 11 );
remove_filter( 'wp_judul', 'kapital_P_dangit', 11 );
remove_filter( 'comment_text', 'capital_P_dangit', 31 );
remove_filter( 'widget_text_content', 'capital_P_dangit', 11 );

Cuplikan kode yang disediakan oleh ClassicPress.

Dan Anda bisa mengganti fungsi tersebut hanya dengan menulis WordPress dengan benar.

5. Menonaktifkan XML-RPC

XML-RPC merupakan fitur yang sebagian besar sudah usang di WordPress dan sering kali direkomendasikan untuk dinonaktifkan karena dapat meningkatkan performa situs Anda, dan yang lebih penting lagi, keamanan, karena dapat menjadi vektor serangan potensial untuk upaya brute force. Kecuali jika Anda secara khusus membutuhkan fungsionalitas yang disediakan, seperti untuk aplikasi seluler atau penerbitan jarak jauh, Anda dapat menonaktifkannya dengan aman.

Ada beberapa cara untuk menonaktifkannya, melalui Apache, Nginx atau PHP, dan sebagian besar pengaya yang berhubungan dengan keamanan dan login dapat mengatasinya. Metode paling sederhana adalah dengan satu baris yang disediakan oleh Jeff Star dari Perishable Press:

add_filter('xmlrpc_enabled', '__return_false');

Artikel ini juga menjelaskan secara detail tentang bagaimana XML-RPC sebenarnya dimuat dan lebih banyak cara untuk menonaktifkannya, jadi saya sarankan Anda untuk membacanya. Disarankan juga untuk menonaktifkan X-Pingback:

// Nonaktifkan header X-Pingback
function shapeSpace_disable_x_pingback($headers) {

	unset ($headers['X-Pingback']);
	kembalikan $headers;

}
add_filter('wp_headers', 'shapeSpace_disable_x_pingback');

Cuplikan kode yang disediakan oleh Perishable Press.

6. Menonaktifkan Dasbor

Dashicon adalah font ikon yang digunakan oleh Dasbor WordPress, dan akan dimuat di bagian depan meskipun tidak digunakan. Nonaktifkan mereka dengan cara berikut ini:

// hapus tanda hubung
function wpdocs_dequeue_dashicon() {
	if (current_user_can( 'update_core' )) {
	    kembali;
	}
	wp_deregister_style('dashicons');
}
add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_dashicon' );

Potongan kode yang disediakan oleh Fatlab.

7. Menonaktifkan Emoji

Meskipun emoji hanya menambah beban yang dapat diabaikan pada ukuran halaman, kami memilih untuk menghapusnya sebagai prinsip.

/**
 * Disable the emoji's
 */
function disable_emojis() {
 remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
 remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
 remove_action( 'wp_print_styles', 'print_emoji_styles' );
 remove_action( 'admin_print_styles', 'print_emoji_styles' ); 
 remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
 remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); 
 remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
 add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
 add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );

/**
 * Filter function used to remove the tinymce emoji plugin.
 * 
 * @param array $plugins 
 * @return array Difference betwen the two arrays
 */
function disable_emojis_tinymce( $plugins ) {
 if ( is_array( $plugins ) ) {
 return array_diff( $plugins, array( 'wpemoji' ) );
 } else {
 return array();
 }
}

/**
 * Remove emoji CDN hostname from DNS prefetching hints.
 *
 * @param array $urls URLs to print for resource hints.
 * @param string $relation_type The relation type the URLs are printed for.
 * @return array Difference betwen the two arrays.
 */
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
 if ( 'dns-prefetch' == $relation_type ) {
 /** This filter is documented in wp-includes/formatting.php */
 $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );

$urls = array_diff( $urls, array( $emoji_svg_url ) );
 }

return $urls;
}

Cuplikan kode yang disediakan oleh Kinsta.

8. Nonaktifkan Sematan

Penyematan otomatis dapat berguna, tetapi ada beberapa alternatif yang lebih baik yang tersedia. Hapuslah dengan menggunakan cara berikut ini:

function disable_embeds_code_init() {

 // Remove the REST API endpoint.
 remove_action( 'rest_api_init', 'wp_oembed_register_route' );

 // Turn off oEmbed auto discovery.
 add_filter( 'embed_oembed_discover', '__return_false' );

 // Don't filter oEmbed results.
 remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );

 // Remove oEmbed discovery links.
 remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

 // Remove oEmbed-specific JavaScript from the front-end and back-end.
 remove_action( 'wp_head', 'wp_oembed_add_host_js' );
 add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );

 // Remove all embeds rewrite rules.
 add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );

 // Remove filter of the oEmbed result before any HTTP requests are made.
 remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}

add_action( 'init', 'disable_embeds_code_init', 9999 );

function disable_embeds_tiny_mce_plugin($plugins) {
    return array_diff($plugins, array('wpembed'));
}

function disable_embeds_rewrites($rules) {
    foreach($rules as $rule => $rewrite) {
        if(false !== strpos($rewrite, 'embed=true')) {
            unset($rules[$rule]);
        }
    }
    return $rules;
}

Cuplikan kode yang disediakan oleh Kinsta

9. Kontrol Detak Jantung

Heartbeat menyediakan fungsionalitas penting pada WordPress, seperti penyimpanan otomatis postingan dan penguncian edit. Membatasinya hingga 5 menit - atau 300 detik - mungkin memiliki dampak yang serupa dengan menonaktifkan fungsionalitas tersebut:

function wb_set_interval_waktu_detak_jantung($settings) {
 $settings['interval']=300;
 kembalikan $settings;
}
add_filter('pengaturan_detak_jantung', 'wb_set_jeda_waktu_detak_jantung');

Terapkan interval yang sama ke penyimpanan otomatis dengan konstanta ini:

define( 'AUTOSAVE_INTERVAL', 300 );

Potongan kode yang disediakan oleh SolidWP

10. Mulai ulang dengan header yang lebih bersih

WordPress telah mengumpulkan banyak hal selama bertahun-tahun, mencoba merangkul setiap teknologi baru, dan beberapa di antaranya telah menjadi usang atau jarang digunakan. Tetapi mereka masih dimuat di setiap halaman, di tempat yang paling penting.

Ini adalah daftar yang lengkap dan aman.

// Hapus tautan rsd.
remove_action( 'wp_head', 'rsd_link' );

// Hapus tag generator WordPress.
remove_action( 'wp_head', 'wp_generator' );

// Menghapus tautan umpan RSS.
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );

// Menghapus tautan ke file manifes Windows Live Writer.
remove_action( 'wp_head', 'wlwmanifest_link' );

// Menghapus tautan posting yang berdekatan.
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );

// Menghapus tautan pendek WordPress untuk postingan Anda.
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );

Cuplikan kode yang disediakan oleh WPExplorer

0.5: Meningkatkan WordPress

1. Jangan takut dengan plugin

Di Raybeam, kami tidak takut dengan plugin. Plugin adalah cara termudah untuk menambahkan fitur-fitur canggih pada WordPress dibandingkan dengan platform CMS lainnya. Jumlah plugin yang Anda gunakan tidak selalu menjadi masalah, tetapi kualitasnya yang menjadi masalah.

Plugin haruslah fokus, idealnya hanya melakukan satu hal dan melakukannya dengan sangat baik. Hindari plugin 'all-in-one' yang menjanjikan untuk melakukan segalanya, karena sering kali gagal dan dapat mengacaukan instalasi Anda.

Terkait performa, tidak ada plugin ajaib yang dapat secara instan memperbaiki semua masalah kecepatan WordPress. Sebaliknya, Anda perlu memahami penyebab umum dari perlambatan, baik di frontend maupun di dasbor admin, dan mengatasinya satu per satu. Untungnya, kami telah mengidentifikasi beberapa penyebab umum.

2. Ajari plugin Anda beberapa cara, mencegahnya mengisi Opsi Muat Otomatis

Ini mungkin alasan nomor satu untuk kinerja dasbor yang buruk. Plugin memiliki pengaturan dan mereka ingin agar dapat dimuat dengan cepat, sehingga mereka mengisi tabel 'wp_options' dengan data dan mengaturnya untuk dimuat di setiap halaman. Hal ini dapat menjadi lebih buruk ketika plugin yang bersangkutan dinonaktifkan/dihapus dan masih menyisakan data.

Plugin Pembersih Basis Data Tingkat Lanjut memberi kami pandangan menyeluruh tentang apa yang terjadi pada basis data kami dan alat untuk memperbaikinya. Pilihan memiliki info tentang setiap data plugin dan apakah plugin tersebut dimuat secara otomatis secara default atau tidak. Pembersihan umum memberikan kontrol yang lebih baik atas Revisi dan Draf otomatispendekatan yang lebih baik daripada menetapkan batas yang dikodekan.

3. Penggabungan CSS/JS sudah tidak berlaku lagi

Di masa lalu, memperkecil dan menggabungkan berkas sangat penting untuk mempercepat situs web, terutama sebelum ada metode kompresi yang efektif seperti Brotli dan Gzip. Meskipun minifikasi masih membantu dengan mengurangi ukuran berkas, namun kepentingannya telah berkurang dengan munculnya teknik kompresi canggih yang melakukan pekerjaan yang lebih baik dalam mengecilkan berkas pada tingkat server web.

Yang paling penting adalah bagaimana kita memuat sumber daya pada sebuah halaman dan apakah sumber daya tersebut menghalangi tampilan konten. Jika skrip atau lembar gaya menunda pemuatan konten halaman, hal ini dapat berdampak negatif pada persepsi pengguna dan peringkat mesin pencari. Pengaya seperti Debloat atau Optimalkan otomatis dapat membantu dengan mengoptimalkan aset, memastikan bahwa elemen-elemen penting dimuat terlebih dahulu dan menunda elemen-elemen yang kurang penting.

4. Penanganan gambar adalah masalah yang sangat rumit

Gambar harus berkualitas tinggi dan tahan untuk masa depan. Artinya, gambar harus diambil dan disimpan dalam resolusi tinggi, sehingga bisa ditampilkan secara jelas pada berbagai macam perangkat, dari smartphone lama hingga layar 4K. Namun, gambar beresolusi tinggi juga dapat menghasilkan ukuran file yang besar, yang dapat memperlambat waktu muat situs web. WordPress secara otomatis menghasilkan beberapa salinan gambar yang diunggah dengan ukuran file yang berbeda, yang berarti menyimpan beberapa versi gambar yang sama.

Kompresi lossy dan lossless dapat mencapai pengurangan yang signifikan dalam ukuran file, tetapi file asli berkualitas tinggi masih harus dipertahankan, karena versi terkompresi mungkin tidak sesuai untuk semua kasus penggunaan, dan metode kompresi yang lebih baik dapat muncul di masa mendatang.

WebP dan AVIF merupakan format kompresi yang mutakhir, tetapi pengadopsiannya masih beragam, dan manfaatnya dibandingkan dengan format tradisional tidak langsung terlihat. Selain itu, mesin pencari telah mengindikasikan bahwa mereka dapat menghukum situs web yang tidak menggunakan format modern ini.

Anda tidak akan dapat menangani semua ini sendiri tanpa plugin atau layanan eksternal. Setelah menguji setiap opsi yang tersedia untuk WordPress, kami sampai pada kesimpulan bahwa, meskipun tidak ada opsi yang sempurna, Pengoptimal Gambar EWWW masih merupakan yang terbaik.

EWWW IO mengompres gambar Anda menggunakan layanan API eksternal, melepaskan beban pemrosesan dari server Anda. EWWW IO memberikan ukuran gambar yang tepat untuk setiap perangkat, dengan memanfaatkan CDN-nya sendiri. Dan untuk peningkatan kinerja terbaik, plugin ini secara otomatis menyediakan versi WebP/AVIF dari gambar Anda jika didukung. Versi premium dari plugin ini disertakan dalam paket Goodies paket.

5. Semua pembangun halaman merupakan beban bagi kinerja

Jangan salah paham, pembangun laman, termasuk Gutenberg, Elementor, Bricks, dan Breakdance, merevolusi WordPress menjadi lebih baik. Gutenberg, tema blok, dan tema FSE memiliki awal yang sulit, tetapi jelas merupakan masa depan WordPress.

Elementor sering dikritik dalam komunitas WordPress, tetapi popularitas dan fitur-fiturnya yang canggih menyaingi platform seperti Wix, Squarespace, dan Webflow, sementara itu gratis, sumber terbuka, di dalam peladen Anda, dan bekerja sesederhana plugin lainnya.

Namun, jika tema klasik (yang biasanya memiliki Sesuaikan entri menu) sudah cukup untuk proyek Anda, lebih suka menggunakannya daripada tema blok atau pembangun halaman. Dan jika Anda tidak perlu menggunakan fungsionalitas blok apa pun, pertimbangkan untuk menonaktifkan Gutenberg.

Ada banyak cara untuk melakukannya dan memulihkan Editor Klasik, secara global atau untuk pengguna tertentu, tetapi cara terbaik adalah dengan plugin Nonaktifkan Gutenberg.

6. WooCommerce dan pluginnya akan menurunkan performa Anda

Menginstal solusi e-commerce apa pun di WordPress pasti akan menambah kerumitan dan berdampak pada kinerja keseluruhannya. WooCommerce - plugin paling populer untuk membuat toko online - membutuhkan pengaturan tambahan di luar aktivasi awal untuk memenuhi kebutuhan bisnis yang sebenarnya. Untuk menjembatani kesenjangan fungsionalitas ini, pemilik toko harus mengandalkan plugin dan kode kustom, yang selanjutnya dapat memperlambat situs.

Dampak kinerja ini menjadi sangat nyata ketika toko Anda berkembang dan menerima lebih banyak lalu lintas dan pesanan. Meskipun teknik pengoptimalan yang kami bahas di artikel ini dapat membantu, ada saatnya di mana penskalaan sumber daya server Anda menjadi penting untuk mempertahankan kinerja yang dapat diterima. Sangat penting untuk mengingat skenario ini ketika berencana untuk memperkuat toko online Anda dengan WooCommerce.

7. Selalu waspada

Situs WordPress dapat menjadi semakin kompleks seiring berjalannya waktu, sehingga pemeriksaan performa secara rutin menjadi sangat penting. Agar situs Anda tetap berjalan dengan lancar, gunakan pengaya seperti Monitor Kueri untuk memeriksa metrik performa situs Anda secara teratur seperti waktu muat halaman dan penggunaan memori. Selain itu, gunakan Debugging WP untuk menyelidiki dan menyelesaikan kesalahan atau konflik PHP.

Sementara Query Monitor berfokus pada pemantauan kinerja, WP Debugging terutama untuk pencatatan kesalahan dan pemecahan masalah. Menggunakan kedua alat ini memberikan pendekatan komprehensif untuk menjaga kesehatan situs Anda.

1. DNS: Cloudflare

Semuanya dimulai dengan manajemen DNS dan penyedia tercepat dan paling andal tidak dapat disangkal lagi adalah Cloudflare. Memposisikan diri di depan setiap akses, ini adalah hal pertama yang akan berinteraksi dengan pengguna saat mereka mengakses situs Anda, dan ini harus sangat cepat.

Kami menerapkan pengaturan non-default berikut ini:

Kecepatan (Pengoptimalan)

  • Speed Brain: Aktif
  • Pemuat Roket™: Aktif
  • Pengoptimalan Platform Otomatis untuk WordPress (APO): Aktif
  • 0-RTT Memulai Kembali Koneksi: Aktif

Caching

  • TTL Cache Browser: Hormati Header yang Ada
  • Petunjuk Perayap: Aktif
  • Cache Berjenjang: Topologi Cache Berjenjang

2. Perangkat keras

Anda akan membutuhkan spesifikasi yang bagus untuk menjalankan WordPress, sebaiknya satu mesin - atau VPS - untuk setiap instalasi, seperti yang kami lakukan di sini di Raybeam. Perusahaan hosting generik atau bahkan "Managed WordPress Hosting" akan menggabungkan situs Anda dengan ratusan situs lainnya di server yang sama atau dalam lingkungan yang terkontainerisasi. Hal ini biasanya dilakukan untuk memangkas biaya dan menawarkan skalabilitas yang mudah, tetapi membuka situs Anda terhadap masalah kinerja dan keamanan.

Semua server kami berjalan pada Contabo dan memiliki perangkat keras yang mengesankan yang menjamin kinerja yang luar biasa:

  • Semua CPU AMD EPYC;
  • Hanya penyimpanan SSD NMVe;
  • 12 pusat data di 9 wilayah, dengan latensi minimal;
  • Lalu lintas 32TB (10TB untuk Australia dan Jepang).

3. Server: Ubuntu + WordOps

Ubuntu 22.04 adalah distribusi Linux pilihan kami untuk instalasi default. Ubuntu banyak digunakan pada server, telah terbukti sangat andal selama bertahun-tahun, dan memiliki komunitas yang kuat.

Selain itu, kami memanfaatkan WordOps untuk mengelola peladen dan situs WordPress kami. Perkakas ini dilengkapi dengan performa default, termasuk versi MariaDB, PHP, dan Nginx yang sudah disetel.

Pengamanan swap paling sedikit 2GB dan proporsional dengan RAM yang tersedia ditambahkan untuk mencegah pekerjaan yang mahal, terutama dari MySQL, agar tidak membuat server menjadi lambat pada saat-saat tertentu.

4. Tembolok:

Sistem cache kami menggunakan arsitektur berlapis, di mana setiap lapisan cache menerapkan pengoptimalan khusus. Pendekatan berjenjang ini memungkinkan sistem cache untuk meningkatkan performa secara progresif, dengan cache tingkat yang lebih tinggi membangun kemampuan cache tingkat yang lebih rendah:

  • OPcache: Zend OPcache diaktifkan secara default sejak PHP 5.5. Pelajari lebih lanjut apa itu di artikel ini disediakan oleh WP Rocket;
  • Cache Objek: Kami mengaktifkan Redis secara default pada semua instalasi, menggunakan versi gratis dari Plugin Cache Objek Redis. Wetopi menyediakan artikel tentang ekspektasi realistis yang harus Anda miliki ketika menggunakan Redis di WordPress;
  • Cache Halaman: WordOps menyediakan cache halaman Redis yang dibangun dengan Nginx setiap kali Redis diaktifkan;
  • Tembolok Peramban: Cache peramban yang bagus untuk Nginx dikemas secara default oleh WordOps, yang juga menyertakan kompresi Brotli;
  • Cache Tepi: Layanan berbayar Cloudflare APO disertakan dalam semua paket sebagai bagian dari paket Goodies kami dan bertindak sebagai hibrida antara cache halaman dan tepi untuk WordPress, membuat salinan statis dari halaman Anda dan mengirimkannya ke semua zona. Perhatikan bahwa ini tidak sepenuhnya menimpa cache peramban Nginx, tetapi dapat memodifikasi header. Artikel terbaik tentang hal ini adalah yang satu ini disediakan oleh Brian Li.

Komentar

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *