CrUX History API nasıl kullanılır?

Bu kılavuzda, web performansı verilerinin zaman serisini sağlayan Chrome Kullanıcı Deneyimi Raporu (CrUX) Geçmişi API uç noktası tanıtılmaktadır. Bu veriler haftalık olarak güncellenir ve 25 veri noktasıyla bir haftalık aralıkla yaklaşık 6 aylık geçmişi görmenizi sağlar.

Orijinal CrUX API uç noktasından alınan günlük güncellemelerle birlikte kullanıldığında artık hem en son verileri hem de daha önce neler olduğunu hızlıca görebilirsiniz. Bu sayede, web sayfası değişikliklerini zaman içinde görmek için bu aracı güçlü bir şekilde kullanabilirsiniz.

Bu sayfada API'yi deneyin

Deneyin.

Günlük CrUX API'yi sorgulayın

CrUX API ile ilgili önceki bir makalede özetlendiği gibi, belirli bir kaynak için alan verilerinin anlık görüntüsünü şu şekilde alabilirsiniz:

API_KEY="[YOUR_API_KEY]"
curl "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=$API_KEY" --header 'Content-Type: application/json' --data '{"origin": "https://web.dev"}'

{
  "record": {
    "key": {
      "origin": "https://web.dev"
    },
    "metrics": {
      "largest_contentful_paint": {
        "histogram": [{
          "start": 0, "end": 2500, "density": 0.9192
        }, {
          "start": 2500, "end": 4000, "density": 0.0513
        }, {
          "start": 4000, "density": 0.0294
        }],
        "percentiles": {
          "p75": 1303
        }
      }
      // ...
    },
    "collectionPeriod": {
      "firstDate": { "year": 2022, "month": 12, "day": 27 },
      "lastDate": { "year": 2023, "month": 1, "day": 23 }
    }
  }
}

Bu anlık görüntü, belirli bir 28 günlük toplama dönemi (bu durumda 27 Aralık 2022 - 23 Ocak 2023) için histogram yoğunluğu değerlerini ve yüzdelik dilim değerlerini içerir.

CrUX History API'yi sorgulayın

Geçmiş uç noktasını çağırmak için URL'deki queryRecord değerini curl komutundaki queryHistoryRecord olarak değiştirin. Önceki çağrıda kullanılan CrUX API anahtarını kullanabilirsiniz.

API_KEY="[YOUR_API_KEY]"
curl "https://chromeuxreport.googleapis.com/v1/records:queryHistoryRecord?key=$API_KEY" \
 --header 'Content-Type: application/json' \
 --data '{"origin": "https://web.dev"}'

Yanıtın genel şekli benzerdir ancak çok daha fazla veri vardır. Artık tek bir veri noktası yerine, 75. yüzdelik dilim (p75) ve histogram yoğunluğu değerlerini içeren alanlar için zaman serileri mevcuttur.

{
  "record": {
    "key": {
      "origin": "https://web.dev"
    },
    "metrics": {
      "largest_contentful_paint": {
        "histogramTimeseries": [{
            "start": 0, "end": 2500, "densities": [
              0.9190, 0.9203, 0.9194, 0.9195, 0.9183, 0.9187
            ]
          }, {
            "start": 2500, "end": 4000, "densities": [
              0.0521, 0.0513, 0.0518, 0.0518, 0.0526, 0.0527
            ]
          },  {
            "start": 4000, "densities": [
              0.0288, 0.0282, 0.0286, 0.0285, 0.0290, 0.0285
            ]
          }
        ],
        "percentilesTimeseries": {
          "p75s": [
            1362, 1352, 1344, 1356, 1366, 1377
          ]
        }
      }
      // ...
    },
    "collectionPeriods": [{
        "firstDate": { "year": 2022, "month": 7, "day": 10 },
        "lastDate": { "year": 2022, "month": 8, "day": 6 }
      }, {
        "firstDate": { "year": 2022, "month": 7, "day": 17 },
        "lastDate": { "year": 2022, "month": 8, "day": 13 }
      }, {
        "firstDate": { "year": 2022, "month": 7, "day": 24 },
        "lastDate": { "year": 2022, "month": 8, "day": 20 }
      }, {
        "firstDate": { "year": 2022, "month": 7, "day": 31 },
        "lastDate": { "year": 2022, "month": 8, "day": 27 }
      }, {
        "firstDate": { "year": 2022, "month": 8, "day": 7 },
        "lastDate": { "year": 2022, "month": 9, "day": 3 }
      }, {
        "firstDate": { "year": 2022, "month": 8, "day": 14 },
        "lastDate": { "year": 2022, "month": 9, "day": 10 }
      }
    ]
  }
}

Bu örnekte, Largest Contentful Paint (LCP) metriğinin 0 ila 2.500 ms aralığı için densities zaman serisi [0.9190, 0.9203, 0.9194, 0.9195, 0.9183, 0.9187].'dır. Bu yoğunlukların her biri, ilgili collectionPeriods girişi sırasında gözlemlenmiştir. Örneğin, beşinci yoğunluk (0,9183) 3 Eylül 2022'de sona eren beşinci toplama dönemine ait yoğunluk, 0,9187 ise bir hafta sonra sona eren dönemdeki yoğunluktur.

Diğer bir deyişle, https://web.dev örneğindeki son zaman serisi girişlerini yorumlarken 14 Ağustos 2022 ile 10 Eylül 2022 arasında sayfa yüklemelerinin% 91,87'sinde LCP değerlerinin 2.500 ms'den küçük, %5,27'sinde 2.500 ms ile 4.000 ms arasında ve% 2,85'inde 4.000 ms'den büyük olduğu tespit edildi.

Benzer şekilde, p75 değerleri için bir zaman serisi vardır: 14 Ağustos 2022 ile 10 Eylül 2022 arasındaki LCP p75 değeri 1377 idi. Bu, bu toplama döneminde kullanıcı deneyimlerinin% 75'inde LCP'nin 1377 ms'den az, %25'inde ise 1377 ms'den fazla olduğu anlamına gelir.

Örnekte yalnızca 6 zaman serisi girişi ve toplama dönemi listelenirken API'den gelen yanıtlarda 25 zaman serisi girişi sağlanır. Bu toplama dönemlerinin her birinin bitiş tarihi 7 gün arayla gelen cumartesi günleri olduğu için bu 6 ayı kapsar.

Herhangi bir yanıtta, histogram kutu yoğunluğu ve p75 değerleri için zaman serisinin uzunluğu collectionPeriods alanındaki dizinin uzunluğuyla tam olarak aynı olacaktır: Bu dizilerdeki dizinlere göre bire bir ilişki vardır.

Sayfa düzeyindeki verileri sorgulayın

CrUX Geçmiş API'si, kaynak düzeyindeki verilerin yanı sıra geçmiş sayfa düzeyindeki verilere de erişim sağlar. Kaynak düzeyindeki veriler daha önce BigQuery'deki CrUX veri kümesi (veya CrUX Kontrol Paneli) kullanılarak kullanılabilirken sayfa düzeyindeki geçmiş veriler yalnızca sitelerin verileri toplayıp depolaması durumunda kullanılabilirdi. Yeni API, artık sayfa düzeyindeki geçmiş verilere erişmenize olanak tanır.

Sayfa düzeyindeki veriler aynı şekilde sorgulanabilir ancak yükü origin yerine url kullanılarak sorgulanabilir:

API_KEY="[YOUR_API_KEY]"
curl "https://chromeuxreport.googleapis.com/v1/records:queryHistoryRecord?key=$API_KEY" \
 --header 'Content-Type: application/json' \
 --data '{"url": "https://web.dev/blog/"}'

Sayfa düzeyindeki (ve kaynak düzeyindeki) geçmiş veriler, CrUX'un geri kalanıyla aynı uygunluk koşullarına tabidir. Bu nedenle, özellikle sayfaların geçmiş kayıtları eksik olabilir. Bu durumlarda "eksik" veriler, histogramTimeseries yoğunlukları için "NaN" ve percentilesTimeseries için null ile gösterilir. Farkın nedeni, histogram yoğunluklarının her zaman sayı olması, yüzdelik dilimlerin ise sayı veya dize olabilmesidir (CLS, sayı gibi görünse bile dize kullanır).

Verileri görselleştirme

Peki veriler neden bu şekilde şekillendirilir? Bu sayede grafiklerin çizilmesi kolaylaşıyor. Örneğin, https://web.dev için Interaction to Next Paint (INP) metriğinin p75 değerlerini gösteren bir grafik aşağıda verilmiştir:

Kasım 2022 civarında bir regresyon gösteren p75 değerinin zaman serisi grafiği

Bu çizgi grafikte, y eksenindeki her değer p75s zaman serisinden alınan bir p75 değeridir ve x ekseni, her toplama dönemi için lastDate olarak ayarlanan zamandır.

Bu histogramlarda üç kutu bulunduğundan, histogram kutusu zaman serisi için üç kutulu grafik olarak bilinen bir grafik verilmiştir.

İyi, iyileştirme gerektiriyor ve yetersiz puanlarının zaman içindeki göreceli oranlarını gösteren yığılmış çubuk grafik.

X ekseni, her koleksiyon dönemi için lastDate olarak ayarlanır. Ancak bu kez y ekseni, INP metriği için belirli bir aralığa giren sayfa yüklemelerinin yüzdesidir ve yığılmış çubuk grafikle gösterilir. p75 grafiği hızlı bir genel bakış sunar. Tek bir grafikte birden fazla metrik eklemek veya hem PHONE hem de DESKTOP için çizgiler göstermek nispeten kolaydır. Üç bölmeli grafik, her toplama dönemi boyunca ölçülen metrik değerlerinin dağılımı hakkında fikir verir.

Örneğin, p75 grafiği https://web.dev'in gözlem döneminde neredeyse kabul edilebilir INP değerlerine sahip olduğunu öne sürse de üç bölmeli grafik, sayfa yüklemelerinin küçük bir kısmında INP'nin aslında düşük olduğunu gösterir. Her iki grafikte de Ekim ayının sonlarına doğru başlayan ve Kasım ayının ortasına kadar düzeltilen bir performans gerileme olduğunu anlamak nispeten kolaydır.

Bu tür grafikleri kendiniz oluşturmak için örnek bir Colab oluşturduk. Colab veya "Colaboratory", tarayıcınızdan Python yazmanıza ve çalıştırmanıza olanak tanır. CrUX History API Colab (kaynak), API'ye çağrı yapmak ve verileri grafik haline getirmek için Python'u kullanır.

Bu Colab, kısa bir form doldurarak p75 grafikleri, üç bölmeli grafikler oluşturmanıza, verileri tablo biçiminde almanıza ve CrUX API için istek ve yanıt çiftini görmenize olanak tanır. Bunu kullanmak için programcı olmanız gerekmez ancak Python koduna göz atabilir ve onu muhteşem bir şeye dönüştürebilirsiniz. Keyfini çıkarın ve karşılaştığınız içeriklerle ilgili geri bildirimde bulunmaktan çekinmeyin.

Elbette Colab veya Python ile sınırlı değilsiniz. Bu yeni API'nin nasıl kullanılacağına dair bu örnekten yararlanabilirsiniz. JSON tabanlı bir HTTP uç noktası olarak API, herhangi bir teknolojiden sorgulanabilir.

Sonuç

CrUX History API uç noktası kullanıma sunulmadan önce site sahipleri, CrUX'ten alabilecekleri geçmiş bilgilerle sınırlıydı. BigQuery ve CrUX kontrol paneli kullanılarak aylık kaynak düzeyinde veriler kullanılabilirdi ancak haftalık veriler ve sayfa düzeyinde geçmiş veriler kullanılamazdı. Site sahipleri, günlük API'yi kullanarak bu verileri kendileri kaydedebilir ancak genellikle bu ihtiyacın, metriklerde bir gerileme yaşandıktan sonra keşfedildiği görülmüştür.

Bu CrUX Geçmişi API'sinin kullanıma sunulmasıyla site sahiplerinin değişen site metriklerini daha iyi anlayabilmesi ve sorunlar ortaya çıktığında teşhis aracı olarak kullanabilmesini amaçlıyoruz. Yeni API'yi kullanıyorsanız Chrome UX Report (Discussions) google grubunda geri bildirimlerinizi bekliyoruz.

Teşekkür ederiz

Unsplash'ta Dave Herring tarafından oluşturulan hero resim