İçeriğe geç

Performans

Browser tarafında performansla ilgili görünür ayarlar data-luis attribute'u üzerinden verilir. Bu sayfada yalnızca kullanıcıya doğrudan verdiğiniz runtime değerleri anlatılır.

<link rel="stylesheet" href="./styles.luis" data-luis="lazy">

data-luis değeriEtkiNe zaman kullanılır
lazyObserved kuralları görünüm alanına göre daha geç aktive ederUzun sayfalarda ilk yükü hafifletmek istediğinizde
workerDerlemeyi worker yoluna zorlarBüyük .luis kaynaklarında ana thread'i rahatlatmak istediğinizde
!workerDerlemeyi ana thread'de tutarWorker istemediğiniz veya davranışı sabitlemek istediğinizde

Birden fazla değer birlikte verilebilir:

<link rel="stylesheet" href="./styles.luis" data-luis="lazy,worker">

lazy, özellikle observed kurallar için ilk yükte daha az CSS üretmek istediğinizde kullanılır.

<link rel="stylesheet" href="./cards.luis" data-luis="lazy">

Kısa etkisi:

  • görünüm alanındaki içerik önce gelir
  • aşağıda kalan observed alanlar daha geç aktive olur
  • uzun doküman ve liste sayfalarında başlangıç yükünü azaltır

lazy, özellikle ? ve ?! ile yazılan kurallarda fark yaratır.

DurumDavranış
İlk derlemede selector görünüm alanındaysaKural üretilir
İlk derlemede selector görünüm alanı dışındaysaBekler; görünüm alanına girince üretilir
Eleman sonradan DOM'a eklenirseÜretilir
DurumDavranış
İlk derlemede selector görünüm alanındaysaKural üretilir
İlk derlemede selector görünüm alanı dışındaysaBekler; görünüm alanına girince üretilir
Aynı selector'a uyan yeni eleman sonradan DOM'a eklenirseÜretilmez
??!
Görünüm alanında başlıyorsaÜretilirÜretilir
Görünüm alanı dışında başlıyorsaGirişte bekler, görünür olunca üretilirGirişte bekler, görünür olunca üretilir
Sonradan DOM'a eklenirseÜretilirÜretilmez

worker, .luis derlemesini worker tarafına zorlar.

<link rel="stylesheet" href="./dashboard.luis" data-luis="worker">

Kısa etkisi:

  • büyük kaynaklarda ana thread üzerindeki yük azalır
  • scroll, click ve input sırasında daha az donma hedeflenir
  • derleme davranışı daha ağır sayfalar için daha güvenli hale gelir

worker, observed semantiğini değiştirmez. Yani ? ve ?! kurallarının ne zaman aktive olduğu aynı kalır; değişen şey derleme işinin hangi tarafta yürüdüğüdür.

Kural tipiworker olmadanworker ile
?DOM eşleşince aktive olurAynı
?!İlk uygun eşleşmeler için aktive olurAynı
lazy + ?Görünüm alanına göre gecikebilirAynı
lazy + ?!İlk görünür eşleşmeler için açılır, yeni eklenenler için açılmazAynı

Bu yüzden worker seçimi şu soruya cevap verir:

  • derleme yükünü ana thread'den almak istiyor musunuz?

Ama şu soruyu değiştirmez:

  • ? ile mi ?! ile mi observed davranışı kurmak istiyorsunuz?
<link rel="stylesheet" href="./feed.luis" data-luis="worker">

Bu kullanımda:

  • büyük .luis dosyasının derlenmesi worker tarafına taşınır
  • ama .card? yine dinamik observed olarak kalır
  • .hero?! yine initial observed olarak kalır

!worker, worker yolunu kapatır ve derlemeyi ana thread'de tutar.

<link rel="stylesheet" href="./small-widget.luis" data-luis="!worker">

Bunu genelde şu durumlarda kullanırsınız:

  • kaynak küçükse
  • worker kullanmak istemiyorsanız
  • davranışı açıkça sabitlemek istiyorsanız

En yaygın birleşim:

<link rel="stylesheet" href="./feed.luis" data-luis="lazy,worker">

Bu kombinasyon şu anlama gelir:

  • observed aktivasyon daha geç ve daha seçici olur
  • derleme işi worker tarafına taşınır
DurumSonuç
.item? görünüm alanı dışındaysaLazy bekletir; görünür olunca aktive olur
.item? sonradan DOM'a eklenirseDinamik olarak aktive olur
.item?! görünüm alanı dışındaysaLazy bekletir; görünür olunca aktive olur
.item?! sonradan DOM'a eklenirseTekrar aktive olmaz

Bu birleşimde:

  • lazy, observed kuralın ne zaman açılacağını etkiler
  • worker, derlemenin hangi tarafta yapılacağını etkiler

Yani biri zamanlamayı, diğeri çalıştırma yolunu belirler


data-luis hiç verilmezse runtime varsayılan davranışı kullanır:

<link rel="stylesheet" href="./styles.luis">

Bu durumda:

  • lazy açık değildir
  • worker zorlanmaz
  • !worker ile de kapatılmamıştır