Penyebab Website Lambat

Website lambat tidak hanya mengurangi user experience tapi juga dapat menurunkan rank di search engine, berikut beberapa hal yang sering membuat website menjadi lambat.

Menggunakan Original Image

Gambar yang ditampilkan pada sebuah website sebaiknya di-kompresi atau di-konvert terlebih dahulu agar ukuran nya lebih kecil sehingga dapat tampil lebih cepat pada user. Percuma ngirim gambar ukuran HD jika ditampilin dalam ukuran 300×300.

CMS seperti WordPress dan Prestashop menyiapkan gambar yang ukuran nya berbeda – beda antara thumbnail dan content detail nya, fitur ini membutuhkan storage extra di server untuk menyimpan hasil resize gambar tersebut, ukuran image yang kecil tentu dapat di transfer lebih cepat ke pengunjung.

Memasang plugin LazyLoad mungkin dapat membantu jika satu halaman memiliki banyak gambar untuk ditampilkan. Beberapa plugin lazyload hanya me-request gambar ketika gambar itu tampil pada viewport browser.

Terlalu Banyak Assets

Memasang assets (CSS, JS) yang terlalu banyak tentu dapat membuat ukuran sebuah halaman website menjadi besar dan berdampak langsung pada kecepatan. Hapus assets yang tidak digunakan, atau load assets hanya pada saat digunakan saja, dengan begitu total ukuran halaman akan menjadi lebih kecil. 

Combine dan Minify juga dapat membantu mengurangi jumlah HTTP request. Optimisasi Header Cache-Control juga dapat membantu membuat halaman website terasa cepat karena browser men-cache assets lebih lama. Contohnya seperti dibawah ini:

<filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "\\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>

Anda dapat melakukan pengujian di halaman Google PageSpeed Insights. Beberapa hal yang menjadi perhatian antara lain:

Tidak Memasang Cache

Cache dapat meningkatkan response server sekaligus meringankan beban server karena server hanya perlu memberikan halaman yang sudah digenerate sebelum nya.

Pemasangan Cache pada website pun banyak teknik nya, bisa dengan  menambahkan plugin cache, maupun dengan memasang aplikasi cache terpisah seperti Varnish Cache,

Alternatif lain adalah menggunakan CDN atau Content Delivery Network yang dapat langsung melakukan cache, contohnya CloudFlare dan CloudFront

Kode Kurang Efisien

Kode yang kurang efisien tentu dapat membuat website terasa berat, berikut adalah beberapa hal yang sering saya temui ketika melakukan optimisasi pada sebuah website:

Duplicated Query or Process

Query ke-database yang dipanggil berulang kali adalah mubazir dan buang buang resource, apalagi jika query yang dieksekusi melakukan banyak join table, tentu akan melambatkan server. Jika memungkinkan result query tersebut di simpan saja terlebih dahulu di variable, kode yang membutuhkan result set tersebut mengambilnya dari variable bukan langsung ke database.

Melakukan proses yang sama berulang kali juga merupakan hal yang mubazir. Contohnya looping 2 kali pada sebuah result set untuk menampilkan data dan menghitung total untuk ditampilkan paling bawah. Padahal looping sekali saja cukup untuk menampilkan sambil menghitung total.

Remote HTTP Call

Kode yang membuka koneksi HTTP ke server lain dapat mengakibatkan adanya delay. Contoh nya pada saat tertentu CMS WordPress mengecek keberadaan update ke server mereka, ketika ini terjadi ada delay beberapa detik ketika halaman admin dibuka.

Kasus seperti ini pernah saya temui pada salah satu proyek, ia membuka koneksi ke server untuk melakukan translate pada post. Namun parah nya ketika satu halaman menampilkan sampai 20 post berarti sudah terdapat 20 HTTP call yang harus ditunggu, dan parahnya lagi HTTP call tersebut adalah menuju dirinya sendiri -_-, ini seperti efek domino, bayangkan ketika ada 5 user saja yang mengakses website bersamaan, maka server menanggung beban request sebanyak  5 + (20 x 5) = 105 request. 

Remote HTTP call sebaiknya dihindari, namun jika harus digunakan, result dari HTTP call tersebut dapat di-cache selama beberapa saat, atau jika memungkinkan cukup dilempar saja ke queue.

Menggunakan Remote Database juga kadang menjadi penyebab Lag, pernah saya handle sebuah website server nya berada di US, tapi menggunakan sebuah database ekstra yang berada di Indonesia. Jarak yang jauh tersebut menimbulkan adanya Delay ketika aplikasi meng-eksekusi query pada database ekstra tersebut, Latency ke database tersebut hampir 500ms alias setengah detik!.

Pisahkan Proses yang Lambat

Bagian code yang membutuhkan waktu lama sebaiknya eksekusinya dipisah agar user tidak menunggu terlalu lama. Pemisahan bisa dilakukan dengan “melemparnya” nya ke Queue dan kemudian dieksekusi oleh queue worker.

Kirim email via SMTP biasanya membutuhkan waktu karena ada delay untuk membuka koneksi ke SMTP server. Generate PDF jika terlalu besar kemungkinan membuat server timeout. Proses – proses tersebut dapat dilempar ke queue dan hasilnya dapat di beritahukan ke user melalui email atau notifikasi via websocket.

Basic Programming Syntax

Dalam programming ada banyak cara yang dapat digunakan untuk memecahkan suatu masalah. Hal sepele seperti pemilihan syntax dapat mempengaruhi kinerja suatu aplikasi walau hanya sedikit.

Salah satu contoh pada bahasa pemrograman PHP adalah perbedaan performa looping antara foreach, for, dan while. Ketiga syntax tersebut fungsinya hampir sama yaitu melakukan perulangan, namun menurut PHP Benchmark, pada case tertentu foreach memiliki kinerja yang paling cepat tapi pada case lain juga foreach bisa lebih lambat sampai puluhan kali lipat.

Hal utama yang paling penting menurut saya dalam programming adalah algoritma-nya. Ada banyak cara untuk memecahkan suatu masalah, namun cara yang paling efisien dan cepat sebaiknya yang digunakan. Refactoring!

Server Lambat

Bila optimisasi sudah dilakukan namun Website masih terasa lambat, maka kemungkinan server anda yang memang lambat, saatnya mempertimbangkan untuk Upgrade atau Pindah ke server lain.

Lokasi server dapat mempengaruhi kecepatan karena adanya Latency pada jaringan, jika target visitor anda di Indonesia maka sebaiknya pilih server lokal saja, atau yang paling dekat dengan Indonesia misalnya Singapore. Namun tak selalu yang jarak nya dekat pasti cepat…

Koneksi Client Memang Lambat

-_-

Seorang Web Developer di Denpasar Bali. Nulis blog hanya sekedar iseng dan berbagi pengalaman.

Eksplorasi konten lain dari Kadek Jayak

Langganan sekarang agar bisa terus membaca dan mendapatkan akses ke semua arsip.

Lanjutkan membaca