Chrome Geliştirici Araçları ile tahmin kurallarında hata ayıklama

Tahmin kuralları, önceki yayında ayrıntılı olarak açıklandığı gibi sonraki sayfalarda gezinme işlemlerini önceden getirmek ve işlemek için kullanılabilir. Bu, sayfaların çok daha hızlı veya anında yüklenmesini sağlayarak bu ek sayfa gezinmeleri için Core Web Vitals'ı büyük ölçüde iyileştirebilir.

Spekülasyon kurallarında hata ayıklamak zor olabilir. Bu durum, özellikle önceden işlenmiş sayfalar için geçerlidir. Bu sayfalar, etkinleştirildiğinde geçerli sekmenin yerini alan gizli bir arka plan sekmesine benzer şekilde ayrı bir oluşturucuda işlenir. Bu nedenle, sorunları ayıklamak için her zaman normal Geliştirici Araçları seçenekleri kullanılamaz.

Chrome ekibi, spekülasyon kurallarında hata ayıklama için DevTools desteğini geliştirmek üzere yoğun bir şekilde çalışıyor. Bu yayında, bir sayfanın spekülasyon kurallarını anlamak için bu araçları kullanmanın çeşitli yollarını, bu araçların neden çalışmayabileceğini ve geliştiricilerin daha tanıdık olan Geliştirici Araçları seçeneklerini ne zaman kullanabileceğini (ve ne zaman kullanamayacağını) öğreneceksiniz.

"Ön" terimlerinin açıklaması

Kafanızı karıştırabilecek birçok "ön" eki var. Bu nedenle, öncelikle bunları açıklayarak başlayacağız:

  • Önceden getirme: Gelecekteki performansı artırmak için bir kaynağı veya dokümanı önceden getirme. Bu yayında, alt kaynakları önceden getirmek için sıklıkla kullanılan benzer ancak daha eski <link rel="prefetch"> seçeneği yerine Speculation Rules API kullanılarak dokümanların önceden getirilmesi ele alınmaktadır.
  • Önceden oluşturma: Bu, önceden getirme işleminden bir adım öteye giderek kullanıcının sayfaya gitmiş gibi tüm sayfayı oluşturur ancak kullanıcı gerçekten sayfaya giderse kullanılmaya hazır olacak şekilde gizli bir arka plan oluşturma işleminde tutar. Bu doküman, eski <link rel="prerender"> seçeneği (artık tam önceden oluşturma yapmayan) yerine bunun daha yeni Speculation Rules API sürümüyle ilgilidir.
  • Tahmine dayalı gezinmeler: Tahmin kurallarıyla tetiklenen yeni önceden getirme ve önceden oluşturma seçenekleri için kullanılan genel terim.
  • Önceden yükleme: <link rel="preload">, önceden yükleme tarayıcısı ve service worker navigasyon önceden yüklemeleri dahil olmak üzere çeşitli teknolojileri ve süreçleri ifade edebilen, aşırı yüklenmiş bir terimdir. Bu öğeler burada ele alınmayacak ancak "spekülatif gezinmeler" teriminden net bir şekilde ayırt etmek için bu terim dahil edilmiştir.

prefetch için spekülasyon kuralları

Spekülasyon kuralları, sonraki gezinmenin dokümanını önceden getirmek için kullanılabilir. Örneğin, bir sayfaya aşağıdaki JSON'u eklediğinizde next.html ve next2.html önceden getirilir:

<script type="speculationrules">
  {
    "prefetch": [
      {
        "source": "list",
        "urls": ["next.html", "next2.html"],
        "tag": "rule-set-tag-1"
      }
    ]
  }
</script>

Gezinme öngetirme işlemleri için tahmin kurallarını kullanmanın, daha eski <link rel="prefetch"> söz dizimine kıyasla bazı avantajları vardır. Örneğin, daha etkileyici bir API ve sonuçların HTTP disk önbelleği yerine bellek önbelleğinde depolanması.

prefetch spekülasyon kurallarında hata ayıklama

Tahmin kuralları tarafından tetiklenen önceden getirmeler, diğer getirmelerle aynı şekilde panelinde görülebilir:

Chrome Geliştirici Araçları&#39;ndaki önceden getirilmiş dokümanları gösteren Ağ paneli
Chrome Geliştirici Araçları'ndaki Ağ panelinde önceden getirilmiş dokümanlar gösteriliyor

Kırmızı renkle vurgulanan iki istek, Type (Tür) sütunundan da görüleceği gibi önceden getirilmiş kaynaklardır. Gelecekteki gezinmeler için olduklarından ve Chrome, mevcut sayfanın kaynaklarına öncelik verdiğinden bu kaynaklar Lowest önceliğiyle getirilir.

Satırlardan birini tıkladığınızda, bu isteklerin sunucu tarafında nasıl tanımlanabileceğini gösteren Sec-Purpose: prefetch HTTP üstbilgisi de gösterilir:

Chrome Geliştirici Araçları, Sec-Purpose değeri prefetch olarak ayarlanmış önceden getirme başlıkları
Sec-Purpose, önceden getirme olarak ayarlanmış Chrome Geliştirici Araçları önceden getirme başlıkları

Tahmine dayalı yükleme sekmeleriyle prefetch öğesinde hata ayıklama

Tahmin kurallarının hata ayıklanmasına yardımcı olmak için Chrome DevTools'un Uygulama panelindeki Arka plan hizmetleri bölümüne yeni bir Tahmini yüklemeler bölümü eklendi:

Chrome Geliştirici Araçları&#39;nda önceden getirme kuralını gösteren spekülatif yükleme sekmeleri
Chrome Geliştirici Araçları'ndaki, önceden getirme kuralını gösteren spekülatif yükleme sekmeleri

Bu bölümde üç sekme bulunur:

  • Geçerli sayfanın önceden oluşturulmuş durumunu listeleyen tahmine dayalı yüklemeler.
  • Geçerli sayfada bulunan tüm kural kümelerini listeleyen Kurallar (varsa URL'ler veya kural etiketleri olarak belirlenir).
  • Kural kümelerinden önceden getirilmiş ve önceden oluşturulmuş tüm URL'lerin listelendiği Tahminler.

Tahminler sekmesi önceki ekran görüntüsünde gösterilmektedir ve bu örnek sayfanın 3 sayfanın önceden getirilmesi için tek bir tahmin kuralı grubuna sahip olduğunu görebiliriz. Bu önceden getirme işlemlerinden ikisi başarılı oldu, biri ise başarısız oldu. Kural grubu'nun yanındaki simgeyi tıklayarak Öğeler panelinde kural grubunun kaynağına gidebilirsiniz. Alternatif olarak, Durum bağlantısını tıklayarak bu kural grubuna göre filtrelenmiş Tahminler sekmesine gidebilirsiniz.

Tahminler sekmesinde tüm hedef URL'ler, işlem (önceden getirme veya önceden oluşturma), hangi kural grubundan geldikleri (bir sayfada birden fazla olabilir) ve her tahminin durumu listelenir:

Önceden getirilmiş URL&#39;lerin durumlarıyla birlikte gösterildiği Chrome Geliştirici Araçları Tahminler sekmesi
Önceden getirilmiş URL'leri durumlarıyla birlikte gösteren Chrome Geliştirici Araçları Tahminler sekmesi

URL'lerin üzerinde, tüm kural kümelerindeki URL'leri veya yalnızca belirli bir kural kümesindeki URL'leri göstermek için bir açılır liste kullanılabilir. Altında ise tüm URL'ler listelenir. Bir URL'yi tıkladığınızda daha ayrıntılı bilgi gösterilir.

Bu ekran görüntüsünde, next3.html sayfasının (mevcut olmadığı için 2xx olmayan bir HTTP durum kodu olan 404 döndürüyor) başarısızlık nedenini görebiliriz.

Özet sekmesindeki Tahmine dayalı yüklemeler, bu sayfa için önceden getirme veya önceden işleme kullanılıp kullanılmadığını gösteren bir Bu sayfanın tahmine dayalı içerik durumu raporu gösterir.

Önceden getirilmiş bir sayfaya gidildiğinde başarılı mesajı görmeniz gerekir:

Başarılı bir önceden getirme işlemini gösteren Chrome Geliştirici Araçları Tahmine Dayalı Yüklemeler sekmesi
Başarılı bir önceden getirme işlemini gösteren Chrome Geliştirici Araçları Tahmini Yüklemeler sekmesi

Eşleşmeyen tahminler

Tahmin kuralları içeren bir sayfadan gezinme işlemi yapıldığında ve bu işlem önceden getirme veya önceden işleme ile sonuçlanmadığında sekmenin ek bir bölümünde, URL'nin neden tahmin URL'lerinden biriyle eşleşmediğine dair daha fazla ayrıntı gösterilir. Bu, tahmin kurallarınızdaki yazım hatalarını tespit etmek için yararlıdır.

Chrome Geliştirici Araçları&#39;ndaki Tahmine Dayalı Yüklemeler sekmesi, mevcut URL&#39;nin önceki sayfanın tahmin kurallarındaki URL&#39;lerden hiçbiriyle eşleşmediğini gösteriyor.
Eşleşmeyen URL'ler Geliştirici Araçları'nda vurgulanır

Örneğin, burada next4.html adresine gittik ancak yalnızca next.html, next2.html veya next3.html önceden getirildiği için bunun bu üç kuraldan herhangi biriyle tam olarak eşleşmediğini görebiliriz.

Öngörülü yüklemeler sekmeleri, spekülasyon kurallarının kendisinde hata ayıklamak ve JSON'daki söz dizimi hatalarını bulmak için çok kullanışlıdır.

Önceden getirme işlemlerine gelince, paneli daha tanıdık bir yer olabilir. Önceden getirme hatası örneğinde, önceden getirme için 404 hatasını burada görebilirsiniz:

Chrome Geliştirici Araçları Ağ panelinde başarısız bir önceden getirme işlemi gösteriliyor
Başarısız bir önceden getirme işlemini gösteren Chrome Geliştirici Araçları Ağ paneli

Ancak Spekülatif yüklemeler sekmeleri, bir sonraki bölümde ele alınan önceden işleme spekülasyon kuralları için çok daha kullanışlıdır.

prerender için spekülasyon kuralları

Önceden oluşturma spekülasyon kuralları, önceden getirme spekülasyon kurallarıyla aynı söz dizimine sahiptir. Örneğin:

<script type="speculationrules">
  {
    "prerender": [
      {
        "source": "list",
        "urls": ["next.html", "next2.html"],
        "tag": "rule-set-tag-1"
      }
    ]
  }
</script>

Bu kural grubu, belirtilen sayfaların tam olarak yüklenip oluşturulmasını tetikler (belirli kısıtlamalara tabidir). Bu, ek kaynak maliyetlerine rağmen anında yükleme deneyimi sağlayabilir.

Ancak önceden getirme işlemlerinden farklı olarak bunlar, Chrome'da ayrı bir oluşturma işleminde getirildiği ve oluşturulduğu için panelinde görülemez. Bu durum, önceden oluşturma tahmin kurallarında hata ayıklamak için Speculative loads (Tahmini yüklemeler) sekmelerini daha önemli hale getirir.

Tahmine dayalı yükleme sekmeleriyle prerender öğesinde hata ayıklama

Üç sayfayı önceden getirmek yerine önceden işlemeyi deneyen benzer bir demo sayfasında gösterildiği gibi, önceden işleme tahmin kuralları için aynı tahmine dayalı yükleme ekranları kullanılabilir:

Chrome Geliştirici Araçları, önceden oluşturma tahmini kuralları içeren bir sayfa için sekmeleri tahmine dayalı olarak yükler
Chrome Geliştirici Araçları, önceden oluşturma tahmin kuralları içeren bir sayfa için spekülatif yükleme sekmeleri

Burada, üç URL'den birinin önceden oluşturulamadığını tekrar görüyoruz. Geliştiriciler, 2 Hazır, 1 Başarısızlık bağlantısını tıklayarak Tahminler sekmesinde URL başına ayrıntıları alabilir.

Chrome 121'de doküman kuralları desteğini kullanıma sunduk. Bu sayede tarayıcı, belirli bir URL grubu listelemek yerine bunları sayfadaki aynı kaynak bağlantılarından alabilir:

<script type="speculationrules">
{
  "prerender": [
    {
      "source": "document",
      "where": {
        "and": [
          {"href_matches": "/*"},
          {"not": { "href_matches": "/not-safe-to-prerender/*"}}
        ]
      },
      "eagerness": "moderate"
    }
  ]
}
</script>

Bu örnekte, /not-safe-to-prerender ile başlayanlar hariç tüm aynı kaynak bağlantıları önceden oluşturma adayları olarak seçilir.

Ayrıca, önceden oluşturma eagerness değerini moderate olarak ayarlar. Bu da bağlantının üzerine gelindiğinde veya bağlantı tıklandığında gezinmelerin önceden oluşturulduğu anlamına gelir.

Tahmini kurallar demo sitesinde buna benzer kurallar vardır. Bu sitedeki yeni Tahmini yüklemeler bölümünü kullanmak, tarayıcının sayfada bulduğu tüm uygun URL'ler listelendiği için bu yeni sekmenin ne kadar faydalı olduğunu gösterir:

Chrome Geliştirici Araçları&#39;ndaki bir dizi tetiklenmeyen URL&#39;nin bulunduğu Tahminler sekmesi
Birkaç "tetiklenmedi" URL'si içeren Chrome Geliştirici Araçları Tahminler sekmesi

Bunlar için önceden oluşturma işlemi başlatılmadığından Durum Tetiklenmedi olarak gösterilir. Ancak, işaretçiyi bağlantıların üzerinde tuttuğumuzda her URL önceden oluşturulurken durumun değiştiğini görüyoruz:

Önceden oluşturulmuş sayfaların tetiklendiği Chrome Geliştirici Araçları Speculations sekmesi
Önceden oluşturulmuş sayfaların tetiklendiği Chrome Geliştirici Araçları Speculations sekmesi

Chrome, moderate istekliliği için en fazla 2 önceden oluşturma olmak üzere önceden oluşturma işlemlerine sınır getirmiştir. Bu nedenle, 3. bağlantının üzerine gelindiğinde söz konusu URL'nin başarısızlık nedeni gösterilir:

Başarısız ön yüklemelerin gösterildiği Chrome Geliştirici Araçları Speculations sekmesi
Başarısız ön yüklemelerin gösterildiği Chrome Geliştirici Araçları Speculations sekmesi

Diğer Geliştirici Araçları panelleriyle prerender hata ayıklama

Önceden getirme işlemlerinin aksine, önceden oluşturulan sayfalar kendi arka planda oluşturucularında oluşturuldukları için paneli gibi Geliştirici Araçları panellerindeki mevcut oluşturma işlemlerinde görünmez.

Ancak artık sağ üstteki açılır menüden veya panelin üst kısmında bir URL seçip Denetle'yi seçerek Geliştirici Araçları panelleri tarafından kullanılan oluşturucuyu değiştirebilirsiniz:

Chrome Geliştirici Araçları artık bilgilerin gösterildiği oluşturucular arasında geçiş yapmanıza olanak tanıyor
Chrome Geliştirici Araçları artık bilgilerin gösterildiği oluşturucular arasında geçiş yapmanıza olanak tanıyor

Bu açılır liste (ve seçilen değer), paneli gibi diğer tüm panellerde de paylaşılır. Bu panelde, istenen sayfanın önceden oluşturulmuş sayfa olduğunu görebilirsiniz:

Önceden oluşturulmuş sayfanın ağ isteklerini gösteren Chrome Geliştirici Araçları Ağ paneli
Önceden oluşturulmuş sayfanın ağ isteklerini gösteren Chrome Geliştirici Araçları Ağ paneli

Bu kaynakların HTTP üstbilgilerine baktığımızda hepsinin Sec-Purpose: prefetch;prerender üstbilgisiyle ayarlandığını görüyoruz:

Önceden oluşturulmuş bir sayfanın Sec-Purpose üstbilgisini gösteren Chrome Geliştirici Araçları Ağ paneli
Önceden oluşturulmuş bir sayfanın Sec-Purpose başlığını gösteren Chrome Geliştirici Araçları Ağ paneli

Alternatif olarak, sayfa içeriklerini görebileceğiniz Öğeler panelini kullanabilirsiniz. Örneğin, aşağıdaki ekran görüntüsünde <h1> öğesinin önceden oluşturulmuş sayfa için olduğunu görüyoruz:

Önceden oluşturulmuş sayfa için Chrome Geliştirici Araçları Öğeler paneli
Önceden oluşturulmuş sayfa için Chrome Geliştirici Araçları Öğeler paneli

Alternatif olarak, önceden oluşturulmuş sayfa tarafından yayınlanan konsol günlüklerini görebileceğiniz Konsol paneli:

Önceden oluşturulmuş bir sayfadan alınan konsol çıktısını gösteren Chrome Geliştirici Araçları Konsol paneli
Önceden oluşturulmuş bir sayfadan gelen konsol çıkışını gösteren Chrome Geliştirici Araçları Konsol paneli

Önceden işlenen sayfadaki tahmin kurallarında hata ayıklama

Önceki bölümlerde, önceden oluşturma işlemini başlatan sayfada önceden oluşturulmuş sayfalarda nasıl hata ayıklanacağı açıklanmaktadır. Ancak, önceden oluşturulmuş sayfaların kendilerinin de hata ayıklama bilgileri sağlaması mümkündür. Bu bilgiler, analiz çağrıları yapılarak veya konsola kaydedilerek (önceki bölümde açıklandığı gibi görüntülenebilir) sağlanır.

Ayrıca, önceden oluşturulmuş bir sayfa, kullanıcı tarafından sayfaya gidilerek etkinleştirildikten sonra Speculative loads (Spekülatif yüklemeler) sekmesinde bu durum ve sayfanın başarıyla önceden oluşturulup oluşturulmadığı gösterilir. Önceden oluşturulamadıysa bunun nedenine dair bir açıklama sağlanır:

Chrome Geliştirici Araçları&#39;nın hem başarılı hem de başarısız önceden oluşturulmuş bir sayfayı gösteren Spekülatif Yüklemeler sekmesi
Başarılı ve başarısız önceden oluşturulmuş bir sayfayı gösteren Chrome Geliştirici Araçları Tahmini Yüklemeler sekmesi

Ayrıca, önceden getirme işlemlerinde olduğu gibi, geçerli sayfayla eşleşmeyen tahmin kuralları içeren bir sayfadan gezinirken URL'lerin neden önceki sayfanın tahmin kurallarında yer alanlarla eşleşmediğini Tahmine dayalı yüklemeler sekmesinde göstermeye çalışırız:

Chrome Geliştirici Araçları&#39;nın, mevcut URL ile önceki sayfanın kapsadığı URL&#39;ler arasındaki URL uyuşmazlığını gösteren Tahmine Dayalı Yüklemeler sekmesi
URL uyuşmazlıklarını gösteren Chrome Geliştirici Araçları

Sonuç

Bu yayında, geliştiricilerin önceden getirme ve önceden işleme tahmin kurallarında hata ayıklama yapabileceği çeşitli yöntemleri gösterdik. Ekip, spekülasyon kuralları için araçlar geliştirmeye devam ediyor. Geliştiricilerden, bu heyecan verici yeni API'de hata ayıklama konusunda yardımcı olabilecek başka yöntemler hakkında öneriler almak isteriz. Geliştiricilerin, özellik istekleri veya tespit edilen hatalar için Chrome sorun izleyicisinde sorun kaydı oluşturmasını öneririz.

Teşekkür

Unsplash'te Nubelson Fernandes tarafından oluşturulan küçük resim.