Tips Meningkatkan Perfomansi Disisi Browser Pada Aplikasi Rails
- Categories:
Perfomansi merupakan salah satu perhatian utama dalam membangun aplikasi web. Dalam sebuah artikel blog yang dibuat oleh Yehuda Katz, dimana dia salah satu anggota Rails Core Contributor dan jQuery Core Contributor, menjelaskan bahwa untuk meningkatkan performansi tidak hanya server-side, tetapi juga client-side. Dia juga menunjukkan studi bahwa 90% performansi dipengaruhi oleh client-side. Selain itu, Yehuda Katz menjelaskan bahwa rekomandasi dari tool YSlow merupakan yang terbaik untuk meningkatkan performansi client-side. Berikut ini adalah tips yang diberikan olehnya untuk meningkatkan performansi client-side.
1. Tidak cepat expire
Rekomendasi dari YSlow adalah atur header expire
pada web server sehingga browser setelah kunjungan pertama tidak perlu melakukan download ulang terhadap file image, Javascript, atau CSS. Namun yang menjadi masalah adalah ketika file-file tersebut diubah, maka browser akan tetap menggunakan file yang lama.
Solusinya adalah memasukkan timestamp seperti ini <img src="http://www.blogger.com/images/myasset.png?943925789135" alt="" />
. Ketika file dimodifikasi, cukup update timestamp-nya sehingga browser akan tahu bahwa terdapat file yang telah diubah. Dengan Ruby on Rails, metode timestamp seperti ini telah diterapkan secara default.
2. GZip
Lakukan konfigurasi Web Server sehingga dapat melakukan kompresi Gzip terhadap file-file seperti javascript dan CSS sehingga ukuran file berkurang. Hal ini sangat direkomendasikan oleh YSlow.
3. Pisahkan Asset dengan banyak host
Pisahkan file-file seperti Javascript, CSS, dan image yang digunakan dengan banyak host misal, assets0.myapp.com
, assets1.myapp.com
dan seterusnya. Dengan begini, browser akan melakukan download file-file tersebut secara paralel sehingga akan mempecepat load halaman web. Dalam Rails, konfigurasi tersebut dapat dilakukan dengan mudah seperti dibawah ini.
Jika sebuah aplikasi web dibangun dengan Rails, tidak heran jika halaman web lebih cepat di-load. Hal ini dikarenakan banyak rekomendasi dari YSlow telah diimplementasikan secara default dan ada beberapa bagian yang cukup melakukan sedikit konfigurasi untuk menggunakannya.
Recent Posts
How to Defend Against Brute-Force and DoS Attacks with Fail2ban, Nginx limit_req, and iptables
In this tutorial, I’ll explain how to protect your public-facing Linux server and Nginx web server from common threats, including brute-force and DoS attacks.
Is Getting AWS Solutions Architect Associate Certification Worth It?
If you are a full-time Software Engineer, there's no strong need to pursue this certification.
DevSecOps
My Notes about DevSecOps
AWS Secrets Manager
Explanation about AWS Secrets Manager with example code.
Envelope Encryption
Envelope encryption is the practice of encrypting plaintext data with a data key, and then encrypting the data key under another key.