Selain plugin, ada beberapa “hack” lain yang bisa kita terapkan agar WordPress makin cepat. Inilah tips mempercepat WordPress dengan htaccess dan function.php.
Banyak upaya yang bisa kita terapkan untuk mempercepat situs berbasis WordPress. Beberapa langkah optimasi yang sudah pernah saya bagikan di beberapa artikel sebelumnya seperti menggunakan plugin LiteSpeed Cache, WP Rocket, atau menggunakan tambahan CDN seperti BunnyCDN.
Bahkan kalau Anda tidak bosan dengan bacaan yang panjang, saya juga sudah menyiapkan artikel cara mempercepat website WordPress secara khusus, lengkap langkah demi langkah yang terarah.
Kali ini saya akan membagikan tips mempercepat WordPress dari sisi lain yaitu menggunakan htaccess dan function.php.
Tips Mempercepat WordPress Dengan htaccess dan Function.php
Sebelum melanjutkan, ada baiknya Anda melakukan backup file htaccess. Saya harapkan Anda sudah mengetahui cara memodifikasi file htaccess.
Bagaimana Mempercepat WordPress Menggunakan htaccess?
Aktifkan Keep Alive
Mengaktifkan “Keep Alive” akan memberikan keuntungan dari sisi server dan browser yang akan mengunduh sumber daya pada satu koneksi, sehingga meningkatkan kecepatan pemuatan halaman.
Masukkan kode berikut ke htaccess:
## Aktifkan Keep Alive ##
<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>
Menambahkan Cache-Control Headers
## Cache-Control Headers ##
<ifModule mod_headers.c>
<filesMatch "\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(css)$">
Header set Cache-Control "public"
</filesMatch>
<filesMatch "\.(js)$">
Header set Cache-Control "private"
</filesMatch>
<filesMatch "\.(x?html?|php)$">
Header set Cache-Control "private, must-revalidate"
</filesMatch>
</ifModule>
Aktifkan mod_pagespeed
Beberapa server hosting (terutama yang menggunakan Apache) saat ini rata-rata secara standar sudah mengaktifkan mod_pagespeed.
Untuk mengaktifkan mod_pagespeed, masukkan kode berikut:
## Aktifkan mod_pagespeed ##
<IfModule pagespeed_module>
ModPagespeed on
ModPagespeedEnableFilters rewrite_css,combine_css
ModPagespeedEnableFilters recompress_images
ModPagespeedEnableFilters convert_png_to_jpeg,convert_jpeg_to_webp
ModPagespeedEnableFilters collapse_whitespace,remove_comments
</IfModule>
Aktifkan LiteSpeed Server Cache
Jika hosting yang Anda gunakan sudah menggunakan LiteSpeed Web Server, aktifkan fitur server cache dengan memasukkan kode berikut ini:
## Aktifkan LiteSpeed Server Cache ##
<IfModule LiteSpeed>
CacheEnable public
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^GET|HEAD$
RewriteCond %{HTTP_HOST} ^sample.com|sample.net|sample.org [NC]
RewriteCond %{REQUEST_URI} !login|admin|register|post|cron
RewriteCond %{QUERY_STRING} !nocache
RewriteRule .* - [E=Cache-Control:max-age=300]
</IfModule>
Aktifkan Browser Cache
Agar beban server hosting semakin berkurang dan untuk mengupayakan kecepatan website, hal penting berikutnya yang harus diaktifkan adalah browser cache.
Keuntungan mengkatifkan browser cache adalah menyimpan sumber daya dari halaman situs web Anda di perangkat yang digunakan oleh pengunjung website.
Jika pengunjung suatu saat melakukan kunjungan lagi ke web Anda, browser akan menyajikan salinan cache yang sudah tersimpan sehingga menghemat bandwidth dan beban server serta tentu saja waktu pemuatan juga lebih singkat.
Masukkan kode berikut:
## Aktifkan Browser Cache ##
<IfModule mod_expires.c>
## Enable expiration control
ExpiresActive On
## Simpan cache CSS and JS untuk 1 minggu
ExpiresByType text/css "now plus 1 week"
ExpiresByType application/javascript "now plus 1 week"
ExpiresByType application/x-javascript "now plus 1 week"
## Simpan cache gambar untuk 1 bulan
ExpiresByType image/bmp "now plus 1 month"
ExpiresByType image/gif "now plus 1 month"
ExpiresByType image/jpeg "now plus 1 month"
ExpiresByType image/jp2 "now plus 1 month"
ExpiresByType image/pipeg "now plus 1 month"
ExpiresByType image/png "now plus 1 month"
ExpiresByType image/svg+xml "now plus 1 month"
ExpiresByType image/tiff "now plus 1 month"
ExpiresByType image/x-icon "now plus 1 month"
ExpiresByType image/ico "now plus 1 month"
ExpiresByType image/icon "now plus 1 month"
ExpiresByType text/ico "now plus 1 month"
ExpiresByType application/ico "now plus 1 month"
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
## Simpan cache font untuk 1 minggu
ExpiresByType application/x-font-ttf "now plus 1 week"
ExpiresByType application/x-font-opentype "now plus 1 week"
ExpiresByType application/x-font-woff "now plus 1 week"
ExpiresByType font/woff2 "now plus 1 week"
ExpiresByType image/svg+xml "now plus 1 week"
## Simpan cache file audio untuk 1 bulan
ExpiresByType audio/ogg "now plus 1 month"
ExpiresByType application/ogg "now plus 1 month"
ExpiresByType audio/basic "now plus 1 month"
ExpiresByType audio/mid "now plus 1 month"
ExpiresByType audio/midi "now plus 1 month"
ExpiresByType audio/mpeg "now plus 1 month"
ExpiresByType audio/mp3 "now plus 1 month"
ExpiresByType audio/x-aiff "now plus 1 month"
ExpiresByType audio/x-mpegurl "now plus 1 month"
ExpiresByType audio/x-pn-realaudio "now plus 1 month"
ExpiresByType audio/x-wav "now plus 1 month"
## Simpan cache video untuk 1 bulan
ExpiresByType application/x-shockwave-flash "now plus 1 month"
ExpiresByType x-world/x-vrml "now plus 1 month"
ExpiresByType video/x-msvideo "now plus 1 month"
ExpiresByType video/mpeg "now plus 1 month"
ExpiresByType video/mp4 "now plus 1 month"
ExpiresByType video/quicktime "now plus 1 month"
ExpiresByType video/x-la-asf "now plus 1 month"
ExpiresByType video/x-ms-asf "now plus 1 month"
</IfModule>
## Cache-Control ##
<filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
Aktifkan Kompresi gzip
Kompresi gzip atau gzip compression akan mengompres file yang dikirim ke browser pengunjung yang tentu saja memungkinkan situs web akan mentransfer lebih sedikit file dan data sehingga lebih cepat.
## GZIP Compression ##
<IfModule mod_headers.c>
<FilesMatch ".(js|css|xml|gz|html)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
Tidak semua server bisa menangani gzip compression dengan baik (bahkan berpotensi mengalami error). Alternatif lain adalah menggunakan metode “DEFLATE”.
## GZIP Compression ##
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
Optimasi Menggunakan Function.php
Untuk melakukan penambahan kode ke function.php, jangan memasukkan kode ini secara langsung ke function.php tema WordPress. Ada baiknya memasukkannya ke function.php child theme atau jika Anda tidak menggunakan child theme bisa menggunakan bantuan plugin Code Snippets.
Matikan Emoji
/**
* Matikan Emoji
*/
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_action( 'init', 'disable_emojis' );
Baca juga: Cara Setting WP Cloudflare Super Page Cache
Matikan Fitur WP Embed
WP Embed adalah fitur yang memberikan akses kepada web atau blog lain untuk menampilkan postingan artikel kita di dalam artikel blog mereka. Cara kerjanya mirip dengan hotlink gambar. Tentu saja hal seperti ini bisa menaikkan beban kinerja server hosting yang Anda gunakan.
/**
* Matikan WP Embed
*/
function speed_stop_loading_wp_embed() {
if (!is_admin()) {
wp_deregister_script('wp-embed');
}
}
add_action('init', 'speed_stop_loading_wp_embed');
Kode berikut ini untuk menonaktifkan oEmbed:
// 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;
}
Matikan Query Strings
Beberapa plugin cache dan optimasi sudah memiliki fitur mematikan query strings. Jika plugin yang Anda gunakan belum memiliki fitur ini, masukkan kode berikut di function.php:
/**
* Matikan query strings
*/
function _remove_script_version( $src ){
$parts = explode( '?ver', $src );
return $parts[0];
}
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
Matikan WordPress RSD Links
Dalam kondisi default, setiap instalasi WordPress akan mengaktifkan tag seperti betikut ini:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://domainmu.com/xmlrpc.php?rsd" />
Link ini hanya berguna jika Anda menggunakan aplikasi khusus untuk edit WordPress atau memanfaatkan fitur XML-RPC. Jika Anda melakukan semua kegiatan edit WordPress dengan browser, ada baiknya link tersebut dinonaktifkan.
/**
* Matikan RSD Links
*/
remove_action( 'wp_head', 'rsd_link' ) ;
Matikan WLWmanifest
Tag berikut ini secara default juga akan muncul pada instalasi WordPress. Jika Anda tidak menggunakan WLW atau Windows Live Writer, ada baiknya link ini dinonaktifkan saja.
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://domainmu.com/wp-includes/wlwmanifest.xml" />
Masukkan kode berikut ini ke function.php:
/**
* Matikan WLWManifest Link
*/
remove_action( 'wp_head', 'wlwmanifest_link' ) ;
Matikan Fitur Dashicons
Dashicons adalah font ikon resmi dari WordPress. Seperti inilah penampilannya.
Dashicons secara default hanya digunakan pada bagian back-end (admin panel). Masukkan kode berikut ke function.php untuk menonaktifkan dashicons pada bagian front-end.
/**
* Matikan Dashicons di Front-end
*/
function wpdocs_dequeue_dashicon() {
if (current_user_can( 'update_core' )) {
return;
}
wp_deregister_style('dashicons');
}
add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_dashicon' );
Matikan Fitur REST API
Jika Anda bukan developer, mematikan fitur REST API adalah salah satu pilihan yang bijaksana.
REST API adalah fitur yang menjadi “jembatan” antara pihak ke 3 (developer atau aplikasi) dengan mengirim dan menerima objek JSON (JavaScript Object Notation).
Ketika REST API aktif, maka link seperti berikut ini secara default juga akan aktif pada instalasi WordPress.
<link rel='https://api.w.org/' href='https://domain.com/wp-json/' />
Gunakan kode berikut ini di function.php:
/**
* Matikan REST API
*/
remove_action('wp_head', 'rest_output_link_wp_head', 10);
remove_action('template_redirect', 'rest_output_link_header', 11, 0);
Matikan Self Pingback
Pingback pada dasarnya adalah komentar otomatis yang dibuat ketika blog lain menautkan link ke situs WordPress milik Anda.
Pingback dibuat saat Anda menautkan link ke artikel di dalam blog Anda sendiri. Pingback pada dasarnya tidak lebih dari spam dan hanya menghabiskan sumber daya.
Masukkan kode berikut ini ke function.php:
/**
* Matikan Pingback
*/
function no_self_ping( &$links ) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_ping' );
Nonaktifkan WordPress Otomatis Cek Browser
Tahukah Anda jika WordPress selalu melakukan tugas otomatis untuk selalu cek apakah browser yang digunakan sudah menggunakan versi terbaru atau belum?
WordPress menggunakan API mereka sendiri untuk melakukan tugas ini. Sayangnya, aktifitas ini tanpa kita ketahui cukup menambah beban bagi server yang kita gunakan. Kita bisa mematikan fitur ini dengan memasukkan kode berikut ini di function.php:
add_filter('pre_http_request', function($ret, array $request, string $url) {
if (\preg_match('!^https?://api\.wordpress\.org/core/browse-happy/!i', $url)) {
return new \WP_Error('http_request_failed', \sprintf('Request to %s is not allowed.', $url));
}
return $ret;
}, 10, 3);
Silahkan clear cache setelah menerapkan kode di atas.
Baca juga: Cara Setting CDN QUIC Cloud dan Cloudflare di WordPress
Kesimpulan
Siapa yang tidak ingin memiliki web WordPress yang cepat?
Ada beberapa metode yang bisa diterapkan untuk mempercepat web berbasis WordPress. Selain menggunakan bantuan plugin dan CDN, metode lain yang bisa digunakan adalah dengan menambahkan beberapa baris kode ke dalam file function.php dan htaccess.
Tips mempercepat WordPress dengan menambahkan beberapa baris kode ke function.php dan htaccess yang sudah dijelaskan di atas sudah saya terapkan di semua web WordPress yang saya kelola.
Hasilnya? Silahkan Anda bisa menilai sendiri di blog yang sedang Anda kunjungi saat ini.
Baca juga:
dari sekian banyak web yang saya baca… ini yang paling komplit dan relevan keterangannya serta mudah dicerna
Hack diatas masih relevan untuk wordpress saat ini gan?
Saya pakai WP Rocket
ini web ga ada loadingnya.
btw kok bisa kolom komentar tanpa isi email?
Apa ini yang dimaksud?
https://www.wpnesia.id/menghilangkan-kolom-url-di-komentar-wordpress/
kalau tanpa email tinggal dimatikan saja di pengaturan Diskusi -> Penulis komentar harus menuliskan nama dan email (tidak usah dicentang).
Padahal pake WPRocket+Generatepress aja dah ngebutt..
Kalau dikombinsaikan dengan oprekan ini…wuzz wuzzz
Thanks mas
Wpnesia padahal gak pakai amp, tapi kok cepetnya bisa seperti yang pake amp ya? Blog saya pakai amp, itu aja sepertinya kalah cepet loadnya wkwkwk gak beres ini wpnesia hahahaha