𝟩 Gizli JavaScript Darboğazı ve Bunlar Nasıl Düzeltilir

Yavaş web uygulamaları nadiren kötü algoritmalardan dolayı başarısız olur. Başarısızlıkları, kodunuzun tarayıcıyla nasıl iletişim kurduğuyla ilgilidir.

300 canlı uygulamayı profilledim. Performans sorunlarının %73'ü bu 7 kaynaktan kaynaklanıyor.

  1. Layout thrashing Bir özelliği okuyup, DOM'a yazıp, sonra tekrar okuduğunuzda bu durum gerçekleşir. Bu, tarayıcıyı düzeni (layout) tekrar tekrar yeniden hesaplamaya zorlar.
  1. Unbounded event listeners Bir olay dinleyicisi ekleyip onu kaldırmamak bellek sızıntılarına (memory leaks) yol açar. Bu, tek sayfalık uygulamalarda (SPA) büyük bir sorundur.
  1. Döngüler içinde senkronize DOM okumaları Bir döngü içinde offsetWidth veya getBoundingClientRect okumak, sürekli reflow tetikler.
  1. requestAnimationFrame toplu işlem eksikliği Kaydırma (scroll) veya yeniden boyutlandırma (resize) olaylarında yapılan doğrudan DOM değişiklikleri çok sık tetiklenir. Bu durum takılmalara (jank) neden olur.
  1. Büyük JSON.parse yükleri Büyük dosyaları ayrıştırmak (parsing) ana iş parçacığını (main thread) bloke eder. Bu da girdi gecikmesine (input lag) neden olur.
  1. Karmaşık CSS seçici eşleştirmeleri Derinlemesine iç içe geçmiş veya karmaşık seçiciler, stil yeniden hesaplamalarını yavaşlatır.
  1. Yinelenen bundle parçaları (chunks) Büyük ve optimize edilmemiş bundle'lar aktarım süresini boşa harcar.

İlerlemenizi nasıl ölçersiniz:

Bu alanları düzeltmek, Core Web Vitals değerlerinizi, özellikle de Largest Contentful Paint ve Interaction to Next Paint değerlerinizi iyileştirir.

Kaynak: https://dev.to/kui_luo/how-to-find-and-fix-7-hidden-performance-bottlenecks-in-your-javascript-code-ek5