Hello, Spirit Of Learning!✨
Siapa di sini yang masih bingung kenapa web Front End kita buat itu kadang lambat dan performa nya kurang?🤔
Terus bagaimana ya agar web yang kita buat mempunyai performance yang baik?
Agar website yang kita buat mempunyai performance yang baik, ada tekniknya nih!. Salah satunya dengan teknik caching dan lazy loading yang akan dibahas pada artikel kali ini. Yuk langsung aja kita gas kupas tuntas mengenai caching dan lazy loading 😁
Pengenalan Performa Front End
Performa Front End adalah proses untuk memahami dan meningkatkan kinerja antarmuka pengguna (UI) pada situs web atau aplikasi. Kinerja UI berkaitan dengan seberapa cepat, lancar, dan responsif UI dapat ditampilkan dan dioperasikan oleh pengguna. Performa UI yang baik dapat meningkatkan kepuasan, loyalitas, dan konversi pengguna, serta mengurangi biaya pengembangan dan pemeliharaan.
Lalu Apa Itu “Catching” ?
Caching adalah proses menyimpan salinan data di tempat penyimpanan sementara, yang disebut cache, sehingga data tersebut dapat diakses lebih cepat. Tujuan caching adalah untuk meningkatkan kinerja dan efisiensi sistem dengan mengurangi waktu yang dibutuhkan untuk mengakses data yang sering digunakan.
Manfaat Catching
Menggunakan caching pasti ada manfaat yang sangat signifikan dong, yaitu antara lain:
- Dapat mengurangi waktu muat halaman: Dengan menyimpan data yang sering digunakan di cache lokal, browser tidak perlu mengunduh data tersebut setiap kali pengguna membuka halaman yang sama.
- Caching dapat menghemat bandwidth: Data yang disimpan di cache tidak perlu diunduh setiap kali pengguna mengunjungi halaman.
- Caching dapat mempercepat respons aplikasi: Ketika data disimpan di cache, waktu yang dibutuhkan untuk mengambil data tersebut dan menampilkannya pada user interface bisa jauh lebih cepat dibandingkan dengan mengambil data langsung dari server.
Dengan demikian, caching adalah teknik penting yang dapat membantu mempercepat performa Front End aplikasi web.
Implementasi Catching
Lalu apa saja nih yang bisa diterapkan untuk implementasi caching ?
Ada 3 implementasi, yaitu menggunakan Service Workers, Local Storage, dan Cache API. Yuk kita kupas tuntas ketiganya 🔥
Service Workers
Service worker adalah sebuah fitur yang memungkinkan kita untuk mengontrol permintaan dan respons jaringan antara browser web dan server web.
Let's make the code
Berikut adalah contoh sederhana kode Service Worker yang dapat digunakan untuk caching aset statis seperti file HTML, CSS, JavaScript, dan gambar:
const CACHE_NAME = 'my-site-cache-v1';
const urlsToCache = [
'/',
'/styles/main.css',
'/script/main.js',
'/images/logo.png',
// Tambahkan URL aset lain yang ingin kamu cache di sini
];
self.addEventListener('install', function(event) {
// Install Service Worker
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Cache dibuka');
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('fetch', function(event) {
// Menangani permintaan fetch
event.respondWith(
caches.match(event.request)
.then(function(response) {
// Cek apakah ada respons dalam cache
if (response) {
// Jika ada, kembalikan respons dari cache
return response;
}
// Jika tidak ada, lakukan permintaan fetch ke jaringan
return fetch(event.request);
})
);
});
self.addEventListener('activate', function(event) {
// Menghapus cache yang tidak terpakai saat Service Worker diaktifkan
var cacheWhitelist = ['my-site-cache-v1'];
event.waitUntil(
caches.keys().then(function(cacheNames) {
return Promise.all(
cacheNames.map(function(cacheName) {
if (cacheWhitelist.indexOf(cacheName) === -1) {
return caches.delete(cacheName);
}
})
);
})
);
});
Pastikan kamu menyimpan file service-worker.js
di-root direktori proyek web kamu dan mendaftarkannya dari file JavaScript utama kamu, biasanya main.js
atau file JavaScript utama lainnya.
Kamu dapat mendaftarkan Service Worker seperti ini:
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/service-worker.js').then(function(registration) {
console.log('ServiceWorker registrasi berhasil: ', registration.scope);
}, function(err) {
console.log('ServiceWorker registrasi gagal: ', err);
});
});
}
Local Storage
Local storage adalah sebuah fitur yang memungkinkan kita untuk menyimpan pasangan key dan value di browser web. Data yang disimpan di local storage tidak memiliki batas waktu kadaluarsa, dan tetap tersedia untuk sesi browser berikutnya.
Let's make the code
Berikut adalah contoh penggunaan Local Storage dalam JavaScript:
// Menyimpan data ke Local Storage
localStorage.setItem('nama', 'John');
localStorage.setItem('umur', 30);
// Mendapatkan data dari Local Storage
const nama = localStorage.getItem('nama');
const umur = localStorage.getItem('umur');
console.log(`Nama: ${nama}, Umur: ${umur}`);
// Menghapus data dari Local Storage
localStorage.removeItem('umur');
// Membersihkan semua data dari Local Storage
localStorage.clear();
Cache API
CacheAPI adalah sebuah fitur yang memungkinkan kita untuk menyimpan dan mengambil permintaan dan respons jaringan di browser web. Data yang disimpan di cache bisa berupa permintaan dan respons yang dibuat saat menjalankan aplikasi, atau yang dibuat khusus untuk menyimpan data untuk digunakan nanti.
Lalu Apa Itu “Lazy Loading”?
Lazy Loading adalah teknik yang digunakan untuk mengoptimalkan pemuatan konten pada sebuah website. Bayangkan kamu sedang membuka halaman web. Biasanya, semua konten seperti gambar dan video dimuat sekaligus. Tapi dengan lazy loading konten-konten ini tidak ditampilkan semua sekaligus
Manfaat Lazy Loading
Lazy loading juga memiliki beberapa manfaat penting dalam meningkatkan performa aplikasi web, yaitu antara lain:
- Pengurangan waktu dan memori: Hanya sebagian kecil halaman web yang diperlukan dimuat terlebih dahulu, sehingga waktu yang dibutuhkan lebih sedikit dan penggunaan memori lebih efisien.
- Pengalaman pengguna lebih baik: Konten yang diminta diumpankan dengan cepat, meningkatkan pengalaman pengguna.
- Hemat biaya: Pendekatan hemat biaya dari sudut pandang pemilik situs web.
- Tidak perlu kode tambahan: Untuk pengguna WordPress, tidak perlu repot membuat kode tambahan untuk lazy loading
Implementasi Lazy Loading
Lalu apa saja nih yang bisa diterapkan untuk implementasi lazy loading ?
Ada 3 implementasi, yaitu menggunakan Intersection Observer API, Javascript Dynamic Imports, dan React.Lazy(). Yuk kita kupas tuntas ketiganya 🔥
Intersection Observer API
Intersection Observer API adalah sebuah fitur yang memungkinkan kita untuk mengamati perubahan pada posisi suatu elemen di halaman web. Misalnya, kita bisa mengetahui apakah elemen tersebut sudah masuk ke dalam area pandang pengguna viewport atau belum, atau apakah elemen tersebut berpotongan dengan elemen lain.
Let's make the code
Berikut adalah contoh penggunaan Intersection Observer API untuk implementasi lazy loading pada gambar:
// Dapatkan semua elemen gambar yang ingin diterapkan lazy loading
const images = document.querySelectorAll('.lazy');
// Buat instance Intersection Observer
const observer = new IntersectionObserver(function(entries, observer) {
entries.forEach(entry => {
// Jika elemen gambar tidak dalam viewport, hentikan eksekusi fungsi
if(!entry.isIntersecting) return;
// Jika elemen gambar dalam viewport, tambahkan URL gambar ke atribut src
const img = entry.target;
img.src = img.dataset.src;
// Hapus class 'lazy' dan berhenti mengobservasi gambar
img.classList.remove('lazy');
observer.unobserve(img);
});
});
// Mulai mengobservasi setiap gambar
images.forEach(img => observer.observe(img));
JavaScript Dynamic Imports
JavaScript dynamic imports adalah cara untuk mengimpor modul secara dinamis dan asinkron pada saat runtime. Ini berbeda dengan impor statis yang dievaluasi pada saat load time.
Let's make the code
Berikut adalah contoh penggunaan impor dinamis dalam JavaScript untuk lazy loading:
button.addEventListener('click', event => {
// Impor modul JavaScript secara dinamis ketika tombol diklik
import('./dialogBox.js')
.then(dialogBox => {
dialogBox.open();
})
.catch(error => {
/* handle error */
});
});
React.Lazy()
React.lazy() adalah sebuah fungsi yang memungkinkan kita untuk mengimpor komponen React secara dinamis dan asinkron pada saat runtime. Ini berarti kita bisa menunda pemuatan kode komponen sampai komponen tersebut benar-benar dibutuhkan untuk ditampilkan. Hal ini bisa meningkatkan kinerja dan efisiensi aplikasi React kita, karena kita tidak perlu mengirimkan seluruh bundle kode ke browser pengguna.
Let's make the code
Berikut adalah contoh penggunaan React.lazy()
untuk implementasi lazy loading dalam aplikasi React:
const OtherComponent = React.lazy(() => import('./OtherComponent'));
function MyComponent() {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
<OtherComponent />
</Suspense>
</div>
);
}
Dalam contoh di atas, React.lazy()
memuat OtherComponent
hanya ketika OtherComponent
perlu di-render. Suspense
digunakan untuk menampilkan konten fallback dalam hal ini, "Loading..." sementara OtherComponent
sedang dimuat.
Penerapan Bersamaan Caching dan Lazy Loading
Penerapan bersamaan caching dan lazy loading adalah sebuah strategi untuk meningkatkan kinerja dan efisiensi website dengan cara mengatur kapan dan bagaimana konten dimuat dan disimpan. Caching adalah proses menyimpan data yang sering digunakan di tempat yang mudah diakses, seperti memori atau disk, sehingga tidak perlu mengambilnya dari sumber aslinya setiap kali dibutuhkan. Lazy loading adalah proses menunda pemuatan konten yang tidak terlihat atau tidak penting sampai pengguna menggulir ke arahnya, sehingga menghemat bandwidth dan sumber daya.
Dengan menerapkan caching dan lazy loading secara bersamaan, kita bisa mendapatkan beberapa manfaat, seperti:
- Meningkatkan kecepatan loading website: karena konten yang sudah disimpan di cache tidak perlu dimuat ulang, dan konten yang belum disimpan di cache hanya dimuat ketika diperlukan.
- Menghemat kuota internet pengguna: karena konten yang tidak dilihat atau tidak diinginkan tidak perlu diunduh, dan konten yang diunduh bisa disimpan di cache untuk penggunaan selanjutnya.
- Meningkatkan pengalaman pengguna: karena konten yang penting dan menarik bisa ditampilkan lebih cepat dan lebih lancar, tanpa gangguan atau jeda.
Kesimpulan
Nah, itulah 2 teknik yang bisa menaikan performance web kalian guys ! 😁
“Dengan demikian, penerapan bersamaan caching dan lazy loading dapat membantu mempercepat performa front end, mengurangi beban pada server, dan memberikan pengalaman pengguna yang lebih baik.”
Tentunya untuk melakukan implementasi tadi harus mempelajari Javascript terlebih dahulu. Tapi belum mempelajari javascript? tenang di BuildWithAngga menyediakan kelas gratis Javascript ES6 Dasar
Tunggu apa lagi? buruan join untuk upgrade skill front end bersama BuildWithAngga 😍
See you guys! ✨