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 sayfa gezinmelerini önceden almak ve önceden oluşturmak için kullanılabilir. Bu, sayfaların çok daha hızlı hatta anında yüklenmesini sağlayarak bu ek sayfa gezinmelerinde Core Web Vitals metriğini önemli ölçüde iyileştirir.

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

Chrome ekibi, spekülasyon kuralları hata ayıklaması için Geliştirici Araçları desteğini iyileştirmek amacıyla yoğun bir şekilde çalışıyor. Bu gönderide, bir sayfanın spekülasyon kurallarını, neden çalışmadıklarını ve geliştiricilerin daha bilinen Geliştirici Araçları seçeneklerini ne zaman kullanabileceğini ve ne zaman kullanılamayacağını anlamak için bu araçları kullanmanın çeşitli yollarını öğreneceksiniz.

"Ön" terimlerinin açıklaması

Kafa karıştırıcı birçok "önce" terimi vardır. Bu nedenle, öncelikle bu terimleri açıklamakla başlayacağız:

  • Ön getirme: Gelecekteki performansı artırmak için bir kaynağı veya dokümanı önceden getirme. Bu gönderi, genellikle alt kaynakları ön beslemek için kullanılan benzer ancak eski <link rel="prefetch"> seçeneği yerine Speculation Rules API'yi kullanarak belgelerin ön beslemesini kapsamaktadır.
  • Önceden oluşturma: Bu işlem, ön beslemenin bir adım ötesine geçer ve sayfanın tamamını kullanıcı sayfaya gitmiş gibi oluşturur ancak kullanıcı gerçekten sayfaya giderse kullanılmaya hazır olarak gizli bir arka plan oluşturma işleminde tutar. Bu doküman, eski <link rel="prerender"> seçeneği (artık tam ön oluşturma yapmaz) yerine bunun daha yeni Speculation Rules API sürümüyle ilgilidir.
  • Gezinme spekülasyonları: Tahmin kuralları tarafından tetiklenen yeni önceden getirme ve önceden işleme seçeneklerine ilişkin toplu terim.
  • Önceden yükleme: <link rel="preload">, önceden yükleme tarayıcı ve hizmet çalışanı gezinme ö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ınmayacaktır ancak bu terim, "gezinme spekülasyonları" teriminden net bir şekilde ayırt edilebilmesi için dahil edilmiştir.

prefetch için spekülasyon kuralları

Spekülasyon kuralları, sonraki gezinme işleminin dokümanlarını önceden almak için kullanılabilir. Örneğin, aşağıdaki JSON bir sayfaya eklenirken, next.html ve next2.html önceden getirilir:

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

Gezinmeyi önceden getirme işlemleri için tahmin kurallarının kullanılması, eski <link rel="prefetch"> söz dizimine kıyasla bazı avantajlar sunar (ör. 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

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

Chrome Geliştirici Araçları&#39;nda, önceden getirilen dokümanları gösteren ağ paneli
Chrome Geliştirici Araçları'nda önceden getirilen belgeleri gösteren ağ paneli

Kırmızı renkle vurgulanan iki istek, Tür sütununda görülebileceği gibi, önceden getirilen kaynaklardır. Bunlar, gelecekteki gezinmeler için olduğundan Lowest öncelikli olarak getirilir ve Chrome, mevcut sayfanın kaynaklarına öncelik verir.

Satırlardan birini tıkladığınızda Sec-Purpose: prefetch HTTP üst bilgisi de gösterilir. Bu istekler, sunucu tarafında bu şekilde tanımlanabilir:

Sec-Purpose önceden getirme olarak ayarlanmış Chrome Geliştirici Araçları önceden getirme başlıkları
Chrome Geliştirici Araçları'nın, Sec-Purpose parametresi önceden getirme olarak ayarlanmış önceden getirme üstbilgileri

Tahmine dayalı yükleme sekmeleriyle prefetch'te hata ayıklama

Spekülasyon kurallarıyla ilgili hata ayıklama işlemine yardımcı olmak için Chrome DevTools'un Uygulama panelinde Arka plan hizmetleri bölümünün altına yeni bir Spekülatif yüklemeler bölümü eklendi:

Chrome Geliştirici Araçları önceden getirme kuralını gösteren tahmine dayalı yükleme sekmeleri
Ön besleme kuralını gösteren Chrome Geliştirici Araçları spekülatif yükleme sekmeleri

Bu bölümde üç sekme vardır:

  • Geçerli sayfanın önceden oluşturulmuş durumunu listeleyen tahmine dayalı yüklemeler.
  • Geçerli sayfada bulunan tüm kural gruplarını listeleyen Kurallar.
  • Kural kümelerindeki önceden getirilen ve önceden oluşturulan tüm URL'leri listeleyen Tahminler.

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

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

Önceden getirilen URL&#39;leri ve durumlarını gösteren Chrome Geliştirici Araçları Tahminler sekmesi
Önceden getirilen URL'leri durumlarıyla birlikte gösteren Chrome Geliştirici Araçları Tahminleri sekmesi

URL'lerin üzerinde, tüm kural kümelerindeki veya yalnızca belirli bir kural kümesindeki URL'leri göstermek için bir açılır menü kullanılabilir. Bunun altında tüm URL'ler listelenir. URL'leri tıklayarak daha ayrıntılı bilgi edinebilirsiniz.

Bu ekran görüntüsünde, next3.html sayfasının (mevcut olmadığı ve bu nedenle 2xx olmayan bir HTTP durum kodu olan 404 döndürdüğü) başarısız olma nedeni gösterilmektedir.

Tahmine dayalı yüklemeler özet sekmesinde, bu sayfa için önceden getirme veya önceden oluşturma işleminin kullanılıp kullanılmadığını gösteren bir Bu sayfanın tahmine dayalı içerik durumu raporu gösterilir.

Önceden getirilen bir sayfaya gidildiğinde başarılı olduğunu belirten bir mesaj görürsünüz:

Başarılı bir ön getirme işlemini gösteren Chrome Geliştirici Araçları Tahmini yüklemeler sekmesi
Başarılı bir ön getirme işlemini gösteren Chrome Geliştirici Araçları Tahmini yüklemeler sekmesi

Eşsiz spekülasyonlar

Tahmin kuralları içeren bir sayfadan, önceden getirme veya önceden oluşturma işleminin kullanılmasıyla sonuçlanmayan bir gezinme yapıldığında, sekmenin ek bir bölümünde URL'nin tahmin URL'lerinden hiçbiriyle eşleşmemesinin nedenine dair daha fazla ayrıntı gösterilir. Bu, tahmin kurallarınızdaki yazım hatalarını tespit etmek için yararlıdır.

Geçerli URL&#39;nin, bir önceki sayfanın tahmin kurallarındaki URL&#39;lerin hiçbiriyle eşleşmediğini gösteren Chrome Geliştirici Araçları Tahmine dayalı yüklemeler sekmesi
Eşleşmeyen URL'ler DevTools'ta vurgulanır

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

Spekülatif yüklemeler sekmeleri, spekülasyon kurallarının hatalarını gidermek ve JSON'da söz dizimi hatalarını bulmak için çok kullanışlıdır.

Ön beslemelerin kendisi için ise paneli muhtemelen daha aşina bir yerdir. Önceden getirme hatası örneğinde, önceden getirme için 404 kodunu burada görebilirsiniz:

Başarısız ön getirme işlemini gösteren Chrome Geliştirici Araçları Ağ paneli
Başarısız ön getirme işlemini gösteren Chrome Geliştirici Araçları Ağ paneli

Bununla birlikte, Tahmine dayalı yüklemeler sekmeleri, bir sonraki bölümde ele alınacak olan tahmin kuralları önceden işleme konusunda çok daha yararlı hale gelir.

prerender için spekülasyon kuralları

Önceden oluşturma spekülasyonu kuralları, önceden getirme spekülasyonu kurallarıyla aynı söz dizimini izler. Örneğin:

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

Bu kural grubu, belirtilen sayfaların tam olarak yüklenmesini ve oluşturulmasını tetikler (belirli kısıtlamalara tabidir). Bu, ek kaynak maliyetleri olsa da anında yükleme deneyimi sunabilir.

Ancak ön getirme işlemlerinin aksine, Chrome'da ayrı bir oluşturma işleminde getirilip oluşturuldukları için bu ön yüklemeler panelinde görülemez. Bu nedenle, ön oluşturma spekülasyonu kurallarında hata ayıklama için Spekülatif yüklemeler sekmeleri daha önemlidir.

Tahmine dayalı yüklemeler sekmeleriyle prerender hatalarını ayıklayın

Üç sayfayı önceden almak yerine önceden oluşturma denemesi yapan benzer bir demo sayfasında gösterildiği gibi, önceden oluşturma spekülasyonu kuralları için aynı Spekülatif yüklemeler ekranları kullanılabilir:

Chrome Geliştirici Araçları Spekülatif, önceden işleme spekülasyon kuralları içeren bir sayfa için sekmeleri yükler
Chrome Geliştirici Araçları, ön oluşturma spekülasyonu kurallarına sahip bir sayfanın sekmelerini spekülatif olarak yükler

Burada, üç URL'den birinin ön oluşturma işleminin başarısız olduğunu tekrar görüyoruz. Geliştiriciler, 2 Hazır, 1 Hata bağlantısını tıklayarak Tahminler sekmesinde URL başına ayrıntıları görebilir.

Chrome 121'de doküman kuralları desteğini kullanıma sunduk. Bu sayede tarayıcı, belirli bir URL grubunu 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, ön oluşturma adayları olarak /not-safe-to-prerender ile başlayanlar hariç tüm aynı kaynak bağlantıları seçilir.

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

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

Tetiklenmeyen URL&#39;lerin yer aldığı Chrome Geliştirici Araçları Tahminler sekmesi
Tetiklenmeyen URL'lerin bulunduğu Chrome Geliştirici Araçları Tahminler sekmesi

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

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

Chrome, moderate istekliliği için maksimum 2 ön oluşturma dahil olmak üzere ön oluşturmalarla ilgili sınırlar belirlemiştir. Bu nedenle, fareyle 3. bağlantının üzerine geldiğinizde söz konusu URL'nin neden başarısız olduğunu görebilirsiniz:

Başarısız ön yüklemelerin gösterildiği Chrome Geliştirici Araçları Tahminler sekmesi
Başarısız önceden yükleme işlemlerinin gösterildiği Chrome Geliştirici Araçları Spekülasyonlar sekmesi

Diğer Geliştirici Araçları panelleriyle prerender hatalarını ayıklayın

Ön beslemenin aksine, önceden oluşturulmuş sayfalar kendi sahne arkası oluşturucuda oluşturuldukları için paneli gibi DevTools panellerindeki mevcut oluşturma işlemlerinde gösterilmez.

Ancak artık sağ üstteki açılır menüden veya panelin üst kısmında bir URL seçip İncele'yi tıklayarak DevTools panelleri tarafından kullanılan oluşturma aracını değiştirmek mümkün:

Chrome Geliştirici Araçları artık bilgilerin gösterildiği oluşturma araçlarını değiştirmenize olanak tanır
Chrome Geliştirici Araçları artık bilgilerin gösterildiği oluşturma araçlarını değiştirmenize olanak tanır

Bu açılır liste (ve seçilen değer), paneli gibi diğer tüm panellerde de paylaşılır. İstenen sayfanın önceden işlenmiş sayfa olduğunu görebilirsiniz.

Önceden oluşturulmuş sayfa için 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örebiliriz:

Önceden oluşturulmuş bir sayfanın Sec-Purpose başlığını 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

Dilerseniz sayfa içeriğini görebileceğiniz Öğeler panelini de kullanabilirsiniz. Aşağıdaki ekran görüntüsünde, <h1> öğesinin önceden oluşturulmuş sayfa için olduğunu görebilirsiniz:

Ö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 işlenmiş sayfa tarafından yayınlanan konsol günlüklerini görebileceğiniz Konsol paneli:

Önceden oluşturulmuş bir sayfanın konsol çıkışını gösteren Chrome Geliştirici Araçları Konsol paneli
Önceden oluşturulmuş bir sayfanın konsol çıkışını gösteren Chrome Geliştirici Araçları Konsolu paneli

Önceden oluşturulmuş sayfada spekülasyon kurallarıyla ilgili hata ayıklama

Önceki bölümlerde, önceden işlemeyi başlatan sayfadaki önceden işlenmiş sayfalarda nasıl hata ayıklanacağı açıklanmaktadır. Bununla birlikte, önceden işlenmiş sayfaların hata ayıklama bilgileri sağlamaları da mümkün olabilir. Bunun için Analytics çağrıları yaparak veya konsola giriş yaparak önceki bölümde açıklanan bilgileri görüntüleyebilirsiniz.

Ayrıca, önceden işlenmiş bir sayfa, oraya giden kullanıcı tarafından etkinleştirildikten sonra Tahmine dayalı yüklemeler sekmesi bu durumu ve sayfanın başarıyla önceden işlenip işlenmediğini gösterir. İçerik önceden oluşturulamadıysa bunun nedeni açıklanır:

Hem başarılı hem de başarısız önceden oluşturulmuş sayfaları gösteren Chrome Geliştirici Araçları Tahmini yüklemeler sekmesi
Hem başarılı hem de başarısız önceden oluşturulmuş sayfayı gösteren Chrome Geliştirici Araçları Tahmini yüklemeler sekmesi

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

Mevcut URL ile önceki sayfanın kapsadığı URL&#39;lerin uyuşmazlığını gösteren Chrome Geliştirici Araçları Tahmini 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 spekülasyon kurallarında hata ayıklamak için kullanabilecekleri çeşitli yöntemleri gösterdik. Ekip, spekülasyon kurallarıyla ilgili araçlar üzerinde çalışmaya devam ediyor. Geliştiricilerden, bu heyecan verici yeni API'de hata ayıklamayla ilgili yardımcı olabilecek diğer yöntemlerle ilgili öneriler almaktan memnuniyet duyarız. Geliştiricilerin, Chrome sorun izleyici üzerinden özellik isteklerine veya tespit edilen hatalara dair sorun bildirmelerini öneririz.

Teşekkür ederiz

Nubelson Fernandes tarafından Unsplash'teki küçük resim.