CodeBlanks Logo Icon CodeBlanks

Proje sonu - Performans sayfası

HTML kursu · Uzman · Ders 17/39

Tüm performans tekniklerini birleştirip dokümante edersin.

Tüm teknikleri birleştir

Son derste sayfayı tamamlıyorsun. Elinde şunlar var:

  • Head'de preload, preconnect, dns-prefetch.
  • Body'de optimize <img> (srcset, sizes, width/height, loading, decoding).
  • main içinde <template> ve <noscript>.

Bu derste üç şey ekleyeceksin: <picture> ve <source> ile modern görsel biçimleri (AVIF, WebP), HTML yorumları ile performans kararlarını dokümante etme ve <footer> ile telif yılı.

Yorumlarla performans kararlarını belgele

HTML yorumları (<!-- ... -->) tarayıcıda görünmez ama kaynakta kalır. Performans kararlarını yorumla belgelemek, ekibin neden böyle yaptığını anlamasına yardımcı olur.

Bu projede üç kritik noktaya yorum ekleyeceksin: head'deki erken bağlantı kararları, LCP görseli ve <picture> bölümü. Yorumlar kısa ve öz olmalı; aşırıya kaçma.

Aynı derste <picture> ve iki <source> ile AVIF ve WebP biçimlerini de tanıtacaksın; bu modern biçimler daha küçük dosya boyutu sağlar.

Uygulama Yorum, picture ve footer ekle

Önceki dersin template ve noscript içeren sayfasını al. Üç şey ekle:

  1. <head>'de <link rel="preconnect">'ten önce bir HTML yorumu (örnek Performans: CDN'ye erken bağlan ve LCP görselini önceden yükle).
  2. <main> içine yeni bir <section> ekle; içine h3 (örnek Öne çıkan hikaye) ve bir <picture> koy. Picture'nin içine iki <source> koy: biri type="image/avif", diğeri type="image/webp", her biri srcset ile. Picture'nin sonuna bir <img> (fallback) ekle.
  3. <body>'nin sonuna bir <footer> ekle; içine telif yılı içeren bir <p> koy (örnek © 2026 Hızlı Haber).
Örnek çözümü göster
<!DOCTYPE html>
<html lang="tr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Hızlı Haber - Ana sayfa</title>
    <!-- Performans: CDN'ye erken bağlan ve LCP görselini önceden yükle -->
    <link rel="preconnect" href="https://cdn.hizlihaber.com">
    <link rel="dns-prefetch" href="https://cdn.hizlihaber.com">
    <link rel="preload" as="image" href="https://cdn.hizlihaber.com/kapak/ana-haber-960.webp">
  </head>
  <body>
    <header>
      <h1>Hızlı Haber</h1>
      <p>Türkiye'nin hızlı haber kaynağı</p>
    </header>
    <main>
      <!-- LCP görseli: srcset ile ekran genişliğine göre seçilir -->
      <article>
        <h2>Borsa rekor tazeledi</h2>
        <img src="https://cdn.hizlihaber.com/kapak/ana-haber-960.webp"
             srcset="https://cdn.hizlihaber.com/kapak/ana-haber-480.webp 480w,
                     https://cdn.hizlihaber.com/kapak/ana-haber-960.webp 960w,
                     https://cdn.hizlihaber.com/kapak/ana-haber-1440.webp 1440w"
             sizes="(max-width: 600px) 100vw, 50vw"
             width="960" height="540"
             alt="Borsa ekranında yükselen grafik"
             loading="lazy" decoding="async">
      </article>
      <!-- Öne çıkan hikaye: picture ile AVIF ve WebP kaynakları sunulur -->
      <section>
        <h3>Öne çıkan hikaye</h3>
        <picture>
          <source type="image/avif" srcset="https://cdn.hizlihaber.com/onecikan/hava-480.avif 480w, https://cdn.hizlihaber.com/onecikan/hava-960.avif 960w">
          <source type="image/webp" srcset="https://cdn.hizlihaber.com/onecikan/hava-480.webp 480w, https://cdn.hizlihaber.com/onecikan/hava-960.webp 960w">
          <img src="https://cdn.hizlihaber.com/onecikan/hava-960.jpg"
               width="960" height="540"
               alt="Hava durumu haritası"
               loading="lazy" decoding="async">
        </picture>
      </section>
      <!-- Son dakika şablonu: JS etkinse klonlanır, değilse noscript gösterilir -->
      <template id="son-dakika-sablonu">
        <article>
          <h2>Son dakika başlığı</h2>
          <p>Detaylar yükleniyor...</p>
        </article>
      </template>
      <noscript>
        <p>Son dakika haberleri için JavaScript'i etkinleştirin.</p>
      </noscript>
    </main>
    <footer>
      <p>© 2026 Hızlı Haber</p>
    </footer>
  </body>
</html>

Performans sayfası tamam!

Tebrikler! 5 dersin sonunda elinde çalışan bir Hızlı Haber sayfası var: head'de kritik kaynak sırası, body'de optimize görsel, picture ile modern biçimler, template ve noscript ile progressive enhancement, yorumlarla dokümante edilmiş kararlar ve footer'da telif yılı.

Her dersin başlangıç kodu önceki dersin çözümünü taşıyordu; sen sadece yeni parçayı ekledin. Bu yapıyı alıp kendi haber sitenle doldurabilir, yeni biçimler ekleyebilir, performans ölçümleri yapabilirsin.

Kendini test et

  1. Bu projede LCP görseli için en uygun yaklaşım hangisi?

    • Görseli preload ile erken yükleyip eager bırakmak
    • Görseli lazy yüklemek ve preload etmemek
    • Görseli yalnızca CSS background-image yapmak
    • Görseli JavaScript ile sonra enjekte etmek
    Cevabı göster

    Görseli preload ile erken yükleyip eager bırakmak — Doğru. LCP görseli preload ile erken yüklenir ve eager bırakılır; lazy yalnızca ekran dışı görseller içindir.

  2. Tekniği sağladığı faydayla eşleştir

    preload
    LCP kaynağını erken yükler
    srcset + sizes
    Ekran yoğunluğuna göre seçer
    width + height
    CLS'i azaltır
    picture + source
    Modern biçimlere dönüşüm
    loading=lazy
    Ekran dışını geciktirir

Uzman bölümündeki tüm dersler