Preload (Önden Yükleme) Nedir?
Kısa tanım
Preload, rel="preload" değerli bir link etiketiyle tarayıcıya mevcut sayfada kesin olarak gerekecek bir kaynağı (font, görsel, stil dosyası, script) erkenden ve yüksek öncelikle indirmesini söyleyen bildirimdir. Kaynak çalıştırılmaz, yalnızca indirilip önbelleğe alınır. Tarayıcının geç keşfedeceği kritik dosyalar için kullanılır; gereksiz preload ise diğer kaynaklarla bant genişliği için yarışır.
Diğer adları: rel=preload, link preload, önden yükleme, ön yükleme

Geç keşfedilen kaynak sorunu
Tarayıcı HTML'i okurken içindeki <img>, <script> ve stil bağlantılarını hızlıca fark edip indirmeye başlar. Sorun, HTML'de doğrudan görünmeyen kaynaklardır: CSS dosyasının içinde tanımlanan bir web fontu, CSS ile verilen bir arka plan görseli ya da başka bir script'in yüklediği modül. Tarayıcı bunları ancak ilgili CSS veya JavaScript indirilip işlendikten sonra öğrenir; bu da kritik bir dosyanın birkaç yüz milisaniye geç istenmesi demektir.
Preload bu zinciri kısaltır: kaynağı daha baştan bildirir, tarayıcı da onu yüksek öncelikle indirip önbellekte hazır tutar. Önemli bir fark: preload bir ipucu değil, zorunlu bir istektir. Tarayıcı preload edilen her dosyayı indirir.
Doğru yazım: as, type ve crossorigin
<!-- Değişken font: CSS'te tanımlı, HTML'de görünmüyor -->
<link rel="preload" href="/fonts/inter-var.woff2"
as="font" type="font/woff2" crossorigin>
<!-- CSS arka planı olarak gelen LCP görseli -->
<link rel="preload" href="/img/hero-1200.avif"
as="image" type="image/avif" fetchpriority="high">aszorunludur. Önceliği, gönderilecekAcceptbaşlığını, içerik güvenlik politikası kontrolünü ve önbellekte eşleştirmeyi bu değer belirler. Yanlış ya da eksikaskullanıldığında preload edilen dosya sonradan tanınmaz ve aynı kaynak iki kez indirilebilir.- Fontlarda
crossoriginşarttır, font aynı alan adından gelse bile. Fontlar CORS modunda istendiği için bu öznitelik yoksa preload kopyası kullanılmaz ve dosya ikinci kez indirilir. type, tarayıcının desteklemediği formatı (örneğin AVIF) hiç indirmemesini sağlar.- Duyarlı görsellerde
imagesrcsetveimagesizes, arka plan varyasyonlarındamediaözniteliği doğru boyutun seçilmesini sağlar.
Aynı bildirim sunucudan HTTP başlığı olarak da gönderilebilir: Link: </fonts/inter-var.woff2>; rel=preload; as=font; crossorigin. Özniteliklerin tam listesi MDN üzerinde yer alır.
Preload mu, fetchpriority mi?
İkisi farklı sorunları çözer. Preload keşif sorununu, fetchpriority ise öncelik sorununu çözer. LCP görseli zaten HTML'de bir <img> olarak duruyorsa preload eklemek yerine o etikete fetchpriority="high" vermek çoğu zaman yeterlidir; tarayıcı görseli zaten bulmuştur, sadece önemini bilmiyordur. Görsel CSS ya da JavaScript üzerinden geliyorsa preload gerekir. fetchpriority güncel Chrome, Edge, Firefox ve Safari sürümlerinde desteklenir; desteklemeyen tarayıcı yalnızca yok sayar.
Preload'un ters teptiği durumlar
- Her şeyi preload etmek: Yüksek öncelikli istek sayısı arttıkça gerçekten kritik olan CSS ve HTML ile bant genişliği paylaşılır; "her şey öncelikliyse hiçbir şey öncelikli değildir".
- Kullanılmayan preload: Sayfada hiç kullanılmayan bir dosya boşuna indirilir; Chrome bu durumda konsolda uyarı verir.
- Sonraki sayfanın dosyaları: Başka bir sayfada gerekecek kaynaklar için preload değil, düşük öncelikli prefetch uygundur.
- Tüm font ağırlıklarını yüklemek: Genellikle ilk ekranda kullanılan bir veya iki web fontu dosyası yeterlidir.
Kaynak başka bir alan adındaysa ve tam URL'si önceden bilinmiyorsa, preload yerine yalnızca bağlantıyı hazırlayan preconnect daha uygun bir araçtır.

