İçeriğe geç
çevrimiçi
trv0.46.1 · 1d135e2

Hızlı kalan hızlı bir web sitesi

Bir web sitesini bir kez hızlandırmak kolaydır. Zor olan, yeni özellikler eklemeye devam ederken onu hızlı tutmaktır. Bu yüzden hızı tek seferlik bir denetim olarak görmeyi bıraktık ve onu her değişikliğin geçmesi gereken bir teste dönüştürdük.

İllüstrasyon: ilk ölçümlerin bütçe çizgisini aştığı, diğerlerinin altında kaldığı bir grafiğin üzerinde 100'ü gösteren dört puan göstergesi.

Bir web sitesini bir kez hızlandırmak kolaydır. Zor olan, yeni özellikler eklemeye devam ederken onu hızlı tutmaktır: her yeni bileşen, yazı tipi veya kütüphane sayfayı biraz daha ağırlaştırır ve site yavaş hissettirene kadar kimse fark etmez. Bu yüzden hızı tek seferlik bir denetim olarak görmeyi bıraktık ve onu her değişikliğin geçmesi gereken bir teste dönüştürdük.

Nereden başladık

Bu siteyi ilk kez ciddi biçimde ölçtüğümüzde, düzen yüklenirken kayıyordu (Cumulative Layout Shift 0,2 civarındaydı) ve kısıtlanmış bir mobil bağlantıda ana içeriğin görünmesi 4 ila 6 saniye sürüyordu. Ana stil dosyası sıkıştırılmış hâlde 41 KB tutuyordu; bunun başlıca nedeni, yönetim paneli için tasarlanmış bileşenlerin ve doğrulama kodunun ziyaretçilere de gönderilmesiydi.

Neleri değiştirdik

  • Ziyaretçiler yalnızca ziyaretçi kodunu alır. Yönetim panelinin UI kütüphanesi ve form doğrulama kütüphanesi artık herkese açık siteye ulaşmıyor. Bir test, sitenin import'larını tarar ve bunlardan biri geri sızarsa başarısız olur.
  • Yalnızca sayfadakiler için CSS. Ana stil dosyası 296 KB'tan 98 KB'a, sıkıştırılmış hâlde ise 16 KB'a indi.
  • Düzeni kaydırmayan yazı tipleri. Önemli yazı tipleri önceden yüklenir ve sayfa artık hiç ihtiyaç duymayabileceği kodu önceden getirmez.

Bunu böyle tutan test

Her pull request'te CI siteyi derler, onu üretim ortamındaki gibi – HTTP/2, TLS, sıkıştırma – sunar ve dört önemli sayfada Lighthouse'u üç kez çalıştırarak medyanı alır. Bütçe: her puan en az 95, en büyük içerik 2 saniyenin altında görünür, düzen kayması 0,1'in altında, ana iş parçacığı engellemesi 200 ms'nin altında. Bir değişiklik bütçeyi aşarsa CI kırmızıya döner ve değişiklik merge edilmez. Yanında bir erişilebilirlik kontrolü de çalışır ve şu anda kapsadığı sayfalarda hiçbir WCAG AA ihlali bulmuyor.

Sonuç

CI'da sayfalar dört Lighthouse kategorisinin hepsinde 100 puan alıyor ve ana içerik bir saniyenin altında görünüyor. Canlı sitede ana sayfa 100 puan alıyor ve ana içerik yaklaşık 1,2 saniyede görünüyor; bir ürün sayfası ise 98 puan alıyor.

Henüz mükemmel olmayan konusunda da dürüstüz: Japonca ve diğer CJK dillerindeki sayfalar daha yavaş, çünkü yazı tipleri çok daha büyük. Bunun için ayrı bir görev var.

Bu sizin için neden önemli

Yavaş bir sayfa, ziyaretçiler tek bir kelime okumadan onları kaybeder; arama motorları da bunu fark eder. Bizimle bir açılış sayfası ya da online mağaza geliştiriyorsanız bu bütçe de beraberinde gelir – ekstra değil, çalışma biçimimizin bir parçası.

Siteniz hakkında bizimle konuşun