Tips Mempercepat WordPress Dengan Htaccess dan Function.php

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.

Tips Mempercepat WordPress
Tips Mempercepat WordPress

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' );

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.

Tips Mempercepat WordPress
WordPress Dashicons (developer.wordpress.org)

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.

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.

2 pemikiran pada “Tips Mempercepat WordPress Dengan Htaccess dan Function.php”

  1. Padahal pake WPRocket+Generatepress aja dah ngebutt..
    Kalau dikombinsaikan dengan oprekan ini…wuzz wuzzz

    Thanks mas

    Balas
  2. 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

    Balas

Tinggalkan komentar