PageSpeed'te LCP gizemi: Aynı sayfalar neden farklı skor aldı
Aynı mimariye sahip statik sayfalar PageSpeed Insights'ta neden ikiye bölündü? LCP=FCP ipucu, yavaş donanımda paint yarışı ve tek satırlık CSS inline çözümü.
Bir geliştirici, 51 statik araç barındıran sitesinde yerel Lighthouse testlerinde 90 üzeri skor alan sayfaların Google'ın gerçek PageSpeed Insights API'sinde ikiye bölündüğünü fark ediyor: bazı sayfalar 90-100 alırken, mimarisi neredeyse aynı olan diğerleri 70-79 bandına düşüyor ve LCP değeri 5.5 saniyeye fırlıyor. API yanıtındaki ham verileri incelediğinde, yavaş sayfalarda gözlenen LCP değerinin gözlenen FCP değerine birebir eşit olduğunu görüyor; yani asıl sorun LCP elementinin kendisi değil, tarayıcının ilk boyamayı geciktirmesi.
Sorunun kaynağı, Google'ın test makinelerinin bilinçli olarak yavaş donanım kullanmasıyla ortaya çıkan bir yarış durumu: async script'ler parse'ı engellemese de değerlendirilmeleri ana thread'i meşgul ediyor ve paint de aynı thread'i bekliyor. Hızlı donanımda paint script'lerden önce gerçekleşirken, yavaş donanımda birkaç ekstra JavaScript parçası bu yarışı script lehine çeviriyor. PSI'nin simülasyon modeli (Lantern) bu küçük gecikmeyi yapısal bir bağımlılık sanıp gerçek dünyada olduğundan çok daha büyük bir LCP tahmini üretiyor; birkaç yüz milisaniyelik kayıp, 5.5 saniyelik korkutucu bir skora dönüşüyor.
Çözüm tek satırlık bir yapılandırma değişikliği oldu: render-blocking CSS istekleri HTML içine gömülerek (Next.js'in inlineCss deneysel özelliğiyle) paint'in script değerlendirmesini beklemesine gerek kalmadan hemen gerçekleşmesi sağlandı. Skorlar aynı gün içinde 70'li seviyelerden 90'ların üzerine çıktı. Ancak yazar bir hafta sonra aynı gizemin, hiç değişmeyen bir kontrol sayfasında da ortaya çıktığını görünce bunun kendi kodundan değil, paylaşımlı test altyapısının yük altında dalgalanmasından kaynaklandığını anlıyor.
Bu deneyim mühendisler için önemli bir ders sunuyor: PageSpeed gibi araçlarda gözlenen (observed) ve modellenen (simulated) metrikleri karşılaştırmak, gerçek performans sorunlarını altyapı gürültüsünden ayırt etmenin en güvenilir yolu. Ayrıca izlemede sabit bir saatte ve değişmeyen bir kontrol sayfasıyla test yapmak, yanlış alarmları önlüyor.