Saat halaman melakukan beberapa permintaan jaringan secara bersamaan, permintaan tersebut sering kali bersaing untuk mendapatkan bandwidth yang sama. Data yang tidak penting seperti analisis, logging, atau sinkronisasi latar belakang harus dideprioritaskan agar pengambilan data yang dimulai oleh pengguna atau data penting dapat diselesaikan lebih cepat.
Cara menerapkan
- Identifikasi permintaan latar belakang: Tentukan panggilan
fetch()mana yang ditujukan untuk data yang tidak penting dan tidak memengaruhi pengalaman pengguna secara langsung. - Terapkan prioritas pengambilan: Tambahkan opsi
priority: 'low'ke objek inisialisasifetch().
Kode contoh
// Use high priority (default) for critical UI updates
const criticalData = await fetch('/api/data');
// Explicitly deprioritize background analytics
fetch('/api/analytics', {
method: 'POST',
body: JSON.stringify(eventData),
// Lower the priority to prevent network contention
priority: 'low'
});
Praktik terbaik
- GUNAKAN
priority: 'low'untuk analisis, beacon, atau data telemetri yang tidak diperlukan untuk tampilan saat ini. - LAKUKAN penggunaan
priority: 'low'untuk "mengambil data di awal" yang mungkin diperlukan pengguna nanti, sehingga tidak memperlambat apa yang mereka butuhkan sekarang. - JANGAN gunakan
priority: 'low'untuk pengambilan yang penting bagi pengalaman pengguna. - JANGAN gunakan kunci
importanceyang tidak digunakan lagi di objek opsi pengambilan. Kunci yang benar adalahpriority.
Strategi penggantian
Opsi priority di Fetch API adalah progressive enhancement. Browser yang tidak mendukungnya akan mengabaikan opsi tersebut dan memperlakukan permintaan dengan prioritas default. Tidak diperlukan deteksi fitur eksplisit atau logika penggantian untuk penggunaan dasar.