Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Third-party script'lerin (analytics, reklam) performansı nasıl düşürdüğünü ve lazy load stratejilerimi

✖ Kapat
Duyuru
✖ Kapat
Duyuru

thedevx

Üye
Katılım
14 Mart 2026
Mesajlar
56
Merhaba arkadaşlar, bugün başımı çok ağrıtan bir konudan bahsedeceğim. Projelerimize Google Analytics, Facebook Pixel, reklam ağları gibi üçüncü taraf script'leri ekliyoruz ama bir süre sonra sayfa hızı metriklerimiz alarm vermeye başlıyor. Lighthouse raporunda kocaman kırmızı çubuklar görmek beni deli ediyordu. Bu script'lerin performansı nasıl düşürdüğünü ve benim uyguladığım lazy load stratejilerini anlatacağım.

🔥 Sorun Nerede Başlıyor?

Bu script'ler genelde blocking olarak yükleniyor. Yani tarayıcı, bu dosyaları indirip çalıştırmadan sayfanın geri kalanını işlemeye devam etmiyor. Ayrıca, bu script'ler genelde başka domain'lerden çağrıldığı için DNS çözümlemesi, TCP bağlantısı derken ciddi bir gecikme yaratıyor. En kötüsü de, kullanıcı sayfayı sadece 2 saniye görüp çıksa bile, arka planda analytics verisi göndermeye çalışan script'lerin çalışmaya devam etmesi.

🚀 Çözüm: Lazy Loading ve Doğru Zamanlama

Ana fikir şu: Kullanıcı etkileşime geçmeden veya sayfayı kaydırmadan, bu script'lere ihtiyacımız yok. Onları sayfa tamamen yüklendikten sonra veya belirli bir kullanıcı eylemi sonrasında yükleyebiliriz. İşte benim kullandığım en temiz çözüm.

İlk olarak, bu script'leri async veya defer attribute'ları ile yüklemek bile büyük bir fark yaratır. Ama ben daha agresif bir yöntem seviyorum: Dinamik olarak script elementi oluşturup DOM'a eklemek.

JavaScript:
function loadThirdPartyScript(src) {
  return new Promise((resolve, reject) => {
    const script = document.createElement('script');
    script.src = src;
    script.async = true;
    script.onload = () => resolve();
    script.onerror = () => reject(new Error(`Script load failed for ${src}`));
    document.body.appendChild(script);
  });
}

Bu fonksiyon ile script'i istediğim zaman çağırabiliyorum. Örneğin, kullanıcı bir butona tıkladığında veya sayfa kaydırma olayında.

⏱️ Analytics için Stratejik Yükleme

Analytics script'lerini sayfa yüklendikten 3-5 saniye sonra yüklemek çok mantıklı. "Bounce rate"i (hemen çıkma oranı) doğru ölçmek için de kullanıcının sayfada en azından birkaç saniye kalmış olması gerekli. Aşağıdaki kod, sayfa yüklendikten belirli bir süre sonra veya kullanıcı kaydırmaya başladığında script'i yükler.

JavaScript:
// Sayfa yüklendikten 4 saniye sonra veya kullanıcı kaydırmaya başlarsa yükle
let scriptLoaded = false;

function loadAnalyticsLazily() {
  if (scriptLoaded) return;

  loadThirdPartyScript('https://www.google-analytics.com/analytics.js')
    .then(() => {
      console.log('Analytics yüklendi.');
      scriptLoaded = true;
      // Burada gerekirse GA init kodunuzu çalıştırabilirsiniz.
    })
    .catch(err => console.error(err));
}

// Seçenek 1: Zamanlayıcı ile
setTimeout(loadAnalyticsLazily, 4000);

// Seçenek 2: Kaydırma olayı ile
window.addEventListener('scroll', loadAnalyticsLazily, { once: true, passive: true });

✅ Sonuçlar ve Dikkat Edilmesi Gerekenler

Bu yöntemleri uyguladıktan sonra Largest Contentful Paint (LCP) ve Total Blocking Time (TBT) metriklerimde ciddi iyileşmeler gördüm. Ancak dikkat etmeniz gereken bir nokta var: Eğer script'in hemen çalışması kritikse (örneğin, bir A/B testi tool'u sayfanın render'ını değiştirecekse) bu yöntem uygun olmayabilir. Her zaman iş gereksinimlerinizi ve kullanıcı deneyimini ön planda tutun.

Siz projelerinizde third-party script'leri nasıl yönetiyorsunuz? Hiç bu tür bir lazy loading stratejisi denediniz mi? Ya da farklı, daha efektif bir yönteminiz var mı? Yorumlarda paylaşalım, hep birlikte öğrenelim.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri