CrUX History API, sayfa ve kaynak ayrıntı düzeyinde altı aylık geçmiş gerçek kullanıcı deneyimi verilerine düşük gecikmeli erişim sağlar.
Yaygın kullanım alanı
CrUX History API, "https://example.com
kaynağı için geçmiş kullanıcı deneyimi trendlerini öğrenin" gibi belirli bir URI'ye yönelik geçmiş kullanıcı deneyimi metriklerinin sorgulanmasına olanak tanır.
History API'si, günlük CrUX API ile aynı yapıyı izler. Tek fark, değerler bir dizide verilir ve anahtarlar çoğul adlarla etiketlenir (örneğin, histogram
yerine histogramTimeseries
veya p75
yerine p75s
).
CrUX API Anahtarı
Günlük API'de olduğu gibi, CrUX History API'yi kullanabilmek için Google Cloud API anahtarı gerekir. Aynı anahtar, günlük ve geçmiş API'si için kullanılabilir.
Kimlik bilgileri sayfasında bir tane oluşturabilir ve Chrome UX Report API
kullanımı için temel hazırlığını yapabilirsiniz.
Bir API anahtarınız olduktan sonra, uygulamanız key=[YOUR_API_KEY]
sorgu parametresini tüm istek URL'lerine ekleyebilir. Örnek sorgulara bakın.
API anahtarı, URL'lere yerleştirmek için güvenlidir; herhangi bir kodlama yapmanız gerekmez.
Veri modeli
Bu bölümde, istekler ve yanıtlardaki verilerin yapısı ayrıntılı bir şekilde açıklanmaktadır.
Kaydet
Bir sayfa veya site hakkında ayrı bir bilgi parçası. Bir kayıtta, bir tanımlayıcı ve belirli bir boyut kombinasyonu için özel veriler bulunabilir. Bir kayıt, bir veya daha fazla metriğe ait veri içerebilir.
Tanımlayıcılar
Tanımlayıcılar, hangi kayıtların aranması gerektiğini belirtir. CrUX'te bu tanımlayıcılar web sayfaları ve web siteleridir.
Köken
Tanımlayıcı bir kaynak olduğunda, söz konusu kaynaktaki tüm sayfalar için mevcut olan tüm veriler bir araya toplanır. Örneğin, http://www.example.com
kaynağının şu site haritasında belirtilen sayfalara sahip olduğunu varsayalım:
http://www.example.com/
http://www.example.com/foo.html
http://www.example.com/bar.html
Bu, kaynağı http://www.example.com
olarak ayarlanmış Chrome Kullanıcı Deneyimi Raporu'nu sorgularken, http://www.example.com/
, http://www.example.com/foo.html
ve http://www.example.com/bar.html
verilerinin, bu kaynağın altındaki tüm sayfalar olduğundan toplu halde döndürüleceği anlamına gelir.
URL'ler
Tanımlayıcı bir URL olduğunda, yalnızca söz konusu URL'ye ilişkin veriler döndürülür. http://www.example.com
kaynak site haritasına tekrar bakılıyor:
http://www.example.com/
http://www.example.com/foo.html
http://www.example.com/bar.html
Tanımlayıcı, http://www.example.com/foo.html
değerine sahip URL olarak ayarlanırsa yalnızca bu sayfaya ilişkin veriler döndürülür.
Boyutlar
Boyutlar, bir kaydın toplandığı belirli bir veri grubunu tanımlar. Örneğin, PHONE
form faktörü, kaydın bir mobil cihazda gerçekleşen yüklemelerle ilgili bilgi içerdiğini gösterir.
CrUX History API yalnızca form faktörü boyutuna göre toplanmış olarak kullanılabilir. PHONE
, TABLET
ve DESKTOP
olarak ayrılan genel bir cihaz sınıfıdır.
Metrik
Metrikleri, istatistiksel toplamaların zaman serisi (histogram, yüzdelik dilim ve kesir) şeklinde raporlarız.
Histogramlar
Metrikler bir histogram dizisinde ifade edildiğinde, her zaman serisi girişi, metriğin tümüyle orantılı olarak bir aralığa denk geldiği sayfa yüklemelerinin yüzdesini temsil eder. Veri noktaları, API tarafından döndürülen toplama dönemi tarihlerine göre sunulur. İlk nokta en erken dönem, son nokta ise en son veri toplama dönemi olacaktır.
Basit bir üç bin histogram örnek bir metrik aşağıdaki gibi görünür:
{
"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]
}
],
}
Bu veriler, sayfa yüklemelerinin% 91,90'ında örnek metrik değerinin, geçmişteki ilk toplama dönemi için 0 ms ile 2.500 ms. arasında ve ardından %92,03, %91,94... Metriğin birimleri bu histogramda yer almıyor. Bu durumda, milisaniye olduğu varsayılır.
Ayrıca, geçmişteki ilk veri toplama döneminde sayfa yüklemelerinin% 5,21'inde örnek metrik değeri 2.500 ms. ile 4.000 ms. arasında ve sayfa yüklemelerinin% 2,88'inde ilk veri toplama döneminde 4.000 ms.den daha yüksek bir değer görülmüştür.
Yüzdelik dilimler
Metrikler, ek analiz için yararlı olabilecek yüzdelik dilimlerin zaman serisini de içerebilir.
Veri noktaları, API tarafından döndürülen toplama dönemi tarihlerine göre sunulur. İlk nokta en erken dönem, son nokta ise en son veri toplama dönemi olacaktır.
{
"percentilesTimeseries": {
"p75s": [1362, 1352, 1344, 1356, 1366, 1377]
},
}
Bu yüzdelik dilimler, söz konusu metrik için verilen yüzdelik dilimdeki belirli metrik değerlerini gösterebilir. Bunlar, nihai birleştirilmiş veri kümesine değil, kullanılabilir verilerin tamamına dayanır. Bu nedenle, nihai birleşik histograma dayanan interpolasyon yüzdelik dilimiyle eşleşmek zorunda değildirler.
Kesirler
Metrikler, etiketli kesirlerin zaman serisi olarak ifade edilebilir; her etiket bir sayfa yüklemesini belirli bir şekilde tanımlar. Veri noktaları, API tarafından döndürülen toplama dönemi tarihlerine göre sunulur. İlk nokta en erken dönem, son nokta ise en son veri toplama dönemi olacaktır.
Örnek:
{
"fractionTimeseries": {
"desktop": {"fractions": [0.3195, 0.2115, 0.1421]},
"phone": {"fractions": [0.6295, 0.7544, 0.8288]},
"tablet": {"fractions": [0.051, 0.0341, 0.029]}
}
}
Bu örnekte en son veri noktası, sayfa yüklemelerinin% 14,21'inin masaüstünden, %82,88'inin ise telefonlardan geldiğini göstermektedir.
Metrik değer türleri
CrUX History API aynı metrik değer türlerini kullandığından daha fazla bilgi için günlük CrUX API metrik değer türleri belgelerine bakabilirsiniz.
Metrik uygunluğu
Uygunluk ölçütlerine göre kaynak veya URL, yalnızca CrUX History API kapsamındaki toplama dönemlerinden bazıları için uygun olabilir. Böyle durumlarda CrUX History API, uygun verisi olmayan toplama dönemleri için histogramTimeseries
yoğunlukları için "NaN"
, percentilesTimeseries
için de null
döndürür. Farkın nedeni, histogram yoğunluklarının her zaman sayı olmasıdır. Yüzdelik dilimler ise sayılar veya dizeler olabilir (CLS, sayı gibi görünseler bile dize kullanır).
Örneğin, ikinci dönemde uygun veriler yoksa bu durum aşağıdaki gibi gösterilir:
{
"histogramTimeseries": [
{
"start": 0,
"end": 2500,
"densities": [0.9190, "NaN", 0.9194, 0.9195, 0.9183, 0.9187]
},
{
"start": 2500,
"end": 4000,
"densities": [0.0521, "NaN", 0.0518, 0.0518, 0.0526, 0.0527]
},
{
"start": 4000,
"densities": [0.0288, "NaN", 0.0286, 0.0285, 0.0290, 0.0285]
}
],
"percentilesTimeseries": {
"p75s": [1362, null, 1344, 1356, 1366, 1377]
},
}
Zaman içinde uygun duruma gelen veya uygun olmayan URL'ler ya da kaynaklar için birçok girişin eksik olduğunu fark edebilirsiniz.
Toplama dönemleri
CrUX History API, her toplama penceresinin başlangıç ve bitiş tarihlerini temsil eden firstDate
ve endDate
alanlarından oluşan bir diziye sahip bir collectionPeriods
nesnesi içerir. Örneğin:
"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 toplama dönemleri artan düzendedir ve yanıtın diğer bölümlerindeki her bir veri noktasının tarih aralığını temsil eder.
History API her Pazartesi güncellenir ve önceki Cumartesi gününe kadar olan verileri içerir (standart 2 günlük gecikme uyarınca). Önceki 25 haftanın verilerini içerir (haftada bir toplama dönemi).
Her toplama dönemi önceki 28 günlük birleştirilmiş verileri içerdiği ve toplama dönemleri haftalık olduğu için toplama dönemleri çakışacaktır. Bunlar, verilerin hareketli ortalamasına benzer. Üç haftalık veri, takip eden her döneme dahil edilir ve bir hafta farklıdır.
Örnek sorgular
Sorgular, https://chromeuxreport.googleapis.com/v1/records:queryHistoryRecord?key=[YOUR_API_KEY]"
hedefine bir POST isteği kullanılarak JSON nesneleri olarak gönderilir ve sorgu verileri POST gövdesinde bir JSON nesnesi olarak kullanılır.
Günlük CrUX API'sinin queryRecord
yerine queryHistoryRecord
kullanıldığını unutmayın.
Örnek gövde:
{
"origin": "https://example.com",
"formFactor": "PHONE",
"metrics": [
"largest_contentful_paint",
"experimental_time_to_first_byte"
]
}
Örneğin, bu komut curl
içinden aşağıdaki komut satırıyla çağrılabilir (API_KEY
yerine anahtarınızla değiştirilmelidir):
curl -s --request POST 'https://chromeuxreport.googleapis.com/v1/records:queryHistoryRecord?key=API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"formFactor":"PHONE","origin":"https://www.example.com","metrics":["largest_contentful_paint", "experimental_time_to_first_byte"]}'
Sayfa düzeyi veriler, sorguya origin
yerine bir url
özelliği iletilerek API aracılığıyla kullanılabilir:
{
"url": "https://example.com/page",
"formFactor": "PHONE",
"metrics": [
"largest_contentful_paint",
"experimental_time_to_first_byte"
]
}
metrics
özelliği ayarlanmazsa kullanılabilir tüm metrikler döndürülür:
cumulative_layout_shift
first_contentful_paint
first_input_delay
interaction_to_next_paint
largest_contentful_paint
experimental_time_to_first_byte
navigation_types
form_factors
(yalnızca istekteformFactor
belirtilmemişse raporlanır)
formFactor
değeri sağlanmazsa değerler tüm form faktörleri genelinde toplanır.
Diğer örnek sorgular için CrUX History API'yi kullanma kılavuzuna bakın.
Veri ardışık düzeni
CrUX veri kümesi, verileri API üzerinden kullanılabilir hale gelmeden önce birleştirmek, toplamak ve filtrelemek için bir ardışık düzen üzerinden işlenir.
Hareketli ortalama
Chrome Kullanıcı Deneyimi Raporu'ndaki veriler, birleştirilmiş metriklerin 28 günlük hareketli ortalamasıdır. Bu, herhangi bir zamanda Chrome Kullanıcı Deneyimi Raporu'nda sunulan verilerin aslında son 28 güne ait birleştirilmiş veriler olduğu anlamına gelir.
History API, her biri bu 28 günü kapsayan bir dizi toplama dönemi içerir. Her toplama dönemi önceki 28 günlük birleştirilmiş verileri içerdiği ve toplama dönemleri haftalık olduğu için toplama dönemleri çakışacaktır. Bunlar, verilerin hareketli ortalamasına benzer. Üç haftalık veri, takip eden her döneme dahil edilir ve bir hafta farklıdır.
Haftalık güncellemeler
History API her pazartesi saat 04:00 UTC civarında güncellenir ve önceki cumartesi gününe kadar olan verileri içerir (standart 2 günlük gecikme uyarınca). Haftada bir toplama dönemi olacak şekilde önceki 25 haftaya ait (yaklaşık 6 ay) verileri içerir.
Güncelleme süreleri için hizmet düzeyi sözleşmesi yoktur; her gün en iyi çaba esasına göre yürütülür.
Şema
CrUX History API için POST
HTTP isteklerini kabul eden tek bir uç nokta vardır. API, istenen kaynak veya sayfayla ilgili performans verilerine karşılık gelen bir veya daha fazla metrics
içeren bir record
döndürür.
HTTP isteği
POST https://chromeuxreport.googleapis.com/v1/records:queryHistoryRecord
URL, gRPC Kod Dönüştürme söz dizimini kullanır.
İstek içeriği
CrUX History API, effectiveConnectionType
istek alanının desteklenmemesi dışında günlük CrUX API ile aynı istek gövdelerini kullanır.
Örneğin, web.dev ana sayfası için masaüstü Largest Contentful Paint değerlerini istemek üzere:
{
"origin": "https://web.dev/",
"formFactor": "DESKTOP",
"metrics": [
"largest_contentful_paint"
]
}
Yanıt gövdesi
Başarılı istekler, aşağıdaki yapıda bir record
nesnesi ve urlNormalizationDetails
içeren yanıtlar döndürür:
{
"record": {
"key": {
object (Key)
},
"metrics": [
string: {
object (Metric)
}
]
},
"urlNormalizationDetails": {
object (UrlNormalization)
}
}
Örneğin, önceki istekteki istek gövdesine verilen yanıt şöyle olabilir:
{
"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 }
}, {
...
}
]
}
}
Anahtar
Key
bu kaydı benzersiz olarak tanımlayan tüm boyutları tanımlar.
{
"formFactor": enum (FormFactor),
// Union field url_pattern can be only one of the following:
"origin": string,
"url": string
// End of list of possible types for union field url_pattern.
}
Alanlar | |
---|---|
formFactor |
Form faktörü, tüm kullanıcıların bu kayıt için siteye erişmek üzere kullandığı cihaz sınıfıdır. Form faktörü belirtilmemişse tüm form faktörleri üzerinden birleştirilmiş veriler döndürülür. |
Birleştirme alanı url_ . URL kalıbı, kaydın uygulandığı URL'dir. url_ şunlardan yalnızca biri olabilir: |
|
origin |
Kaynak, bu kaydın ait olduğu kaynağı belirtir. Not: Bir kaynak belirtirken, bu kaynak altında tüm sayfalardaki yükleme verileri kaynak düzeyindeki kullanıcı deneyimi verileri olarak birleştirilir. |
url |
Not: |
Metrikler
metric
, ilk zengin içerikli boyama gibi tek bir web performansı metriğine ait kullanıcı deneyimi verileri grubudur. Burada, bir bins
serisi olarak gerçek Chrome kullanımının özet histogramını içerir.
{
"histogramTimeseries": [
{
object (Bin)
}
],
"percentilesTimeseries": {
object (Percentiles)
}
}
veya
"fractionTimeseries": {
object (Fractions)
}
Alanlar | |
---|---|
histogramTimeseries[] |
Bir metriğe ait kullanıcı deneyimlerinin zaman serisi histogramı. Zaman serisi histogramında en az bir bölme bulunur ve tüm bölmelerin yoğunluklarının toplamı yaklaşık 1 olur. Söz konusu Koleksiyon Dönemi'ne ait eksik değerler |
percentilesTimeseries |
Metriğin sık kullanılan kullanışlı yüzdelikleri. Yüzdelik dilimlere ilişkin değer türü, Histogram kutuları için verilen değer türleriyle aynı olacaktır. Söz konusu Koleksiyon Dönemi'ne ait eksik değerler |
fractionTimeseries |
Bu nesne, giriş başına yaklaşık 1'e eşit olan etiketli kesirlerin zaman serisi içeriyor. Kesirler, 4 ondalık basamağa yuvarlanır. Eksik girişler, tüm kesirlerde"NaN" olarak ifade edilir. |
Bölme
bin
, baştan sona yayılan veya başlangıcından pozitif sonsuza kadar hiçbir bitiş belirtilmemişse verilerin ayrı bir bölümüdür.
Bir bölmenin başlangıç ve bitiş değerleri, temsil ettiği metriğin değer türünde verilir. Örneğin, ilk zengin içerikli boyama, milisaniye cinsinden ölçülür ve ints olarak gösterilir. Bu nedenle, metrik kutuları başlangıç ve bitiş türleri için int32s'yi kullanır. Bununla birlikte, kümülatif düzen kayması, birimsiz ondalık sayılar halinde ölçülür ve dize olarak kodlanmış ondalık sayı biçiminde gösterilir. Bu nedenle, metrik kutuları kendi değer türü için dizeler kullanır.
{
"start": value,
"end": value,
"densities": [number, number, number...etc.]
}
Alanlar | |
---|---|
start |
Başlangıç, veri bölmesinin başıdır. |
end |
Bitiş, veri bölmesinin sonudur. Bitiş alanı doldurulmazsa bölmenin sonu yoktur ve başlangıcından +sona kadar geçerli olur. |
densities |
Belirli bir metrik için bu bölmenin değerini yaşayan kullanıcıların oranının zaman serisi. Yoğunluklar 4 ondalık basamağa yuvarlanır. |
Yüzdelik dilimler
Percentiles
, belirli bir istatistiksel yüzdelik dilimde bir metriğin sentetik değerlerini içerir. Bunlar, bir metriğin değerini, toplam kullanıcı sayısı içinde kullanıcıların belirli bir yüzdesinin deneyimlediği şekilde tahmin etmek için kullanılır.
{
"P75": value
}
Alanlar | |
---|---|
p75s |
Sayfa yüklemelerinin% 75'inde gerçekleşen değer zaman serisi, belirtilen metrikle bu değerde veya daha düşük bir değerle deneyimlendi. |
Kesirler
Fractions
, giriş başına toplamı yaklaşık 1 olan etiketli kesirlerin zaman serilerini içerir.
Her etiket bir sayfa yüklemesini bir şekilde tanımlar. Bu nedenle, bu şekilde temsil edilen metrikler, sayısal değerler yerine farklı değerler oluşturuyormuş gibi düşünülebilir ve kesirler, belirli bir farklı değerin ne sıklıkta ölçüldüğünü ifade eder.
{
"label_1": { "fractions": array[fraction]},
"label_1": { "fractions": array[fraction]},
...
"label_n": { "fractions": array[fraction]}
}
Histogram kutularındaki yoğunluk değerlerine çok benzer şekilde, her fraction
bir 0.0 <= value <= 1.0
sayıdır ve toplamı yaklaşık 1, 0'dır. Metrik belirli bir toplama dönemi için kullanılamadığında tüm kesir dizilerinde karşılık gelen giriş "NaN" olur.
Alanlar | |
---|---|
p75s |
Sayfa yüklemelerinin% 75'inde gerçekleşen değerlerin zaman serisi, belirtilen metrikle bu değerde veya bu değerden daha düşük performans gösterdi. |
UrlNormalization
Aramanın başarılı olma şansını artırmak için URL'yi normalleştirmek üzere gerçekleştirilen normalleştirme işlemlerini temsil eden nesne. Bunlar, sağlanan url_pattern
aranırken yapılan basit otomatik değişikliklerdir. Aşağıdaki yönlendirmeler gibi karmaşık işlemler işlenmez.
{
"originalUrl": string,
"normalizedUrl": string
}
Alanlar | |
---|---|
originalUrl |
Herhangi bir normalleştirme işleminden önce istenen orijinal URL. |
normalizedUrl |
Normalleştirme işlemlerinden sonraki URL. Bu, makul şekilde aranabilir olan geçerli bir kullanıcı deneyimi URL'sidir. |
Hız sınırları
CrUX History API, her iki API için de ücretsiz olarak sunulan Google Cloud projesi başına dakikada 150 sorgu için CrUX API ile aynı sınırı paylaşır. Bu sınırı ve mevcut kullanımınızı Google Cloud Console'da görebilirsiniz. Bu cömert kota, kullanım alanlarının büyük çoğunluğu için yeterli olacaktır ve artırılmış kota için ödeme yapmak mümkün değildir.