PerformanceTimingConfidence
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die PerformanceTimingConfidence-Schnittstelle bietet Zugriff auf Informationen, die anzeigen, ob ein Leistungsprotokoll die typische Anwendungsleistung widerspiegelt oder wahrscheinlich durch externe Faktoren beeinflusst wird.
Das PerformanceTimingConfidence-Objekt für jeden Navigationstiming-Eintrag wird über die PerformanceNavigationTiming-Schnittstelle und deren confidence-Eigenschaft abgerufen.
Instanzeigenschaften
PerformanceTimingConfidence.randomizedTriggerRateSchreibgeschützt-
Eine Zahl, die angibt, wie oft Rauschen angewendet wird, wenn der
valueoffengelegt wird. PerformanceTimingConfidence.valueSchreibgeschützt-
Ein enumerierter Wert, der eine breite Vertrauensbeurteilung dafür angibt, ob ein Leistungsprotokoll die typische Anwendungsleistung widerspiegelt oder wahrscheinlich durch externe Faktoren beeinflusst wird.
Instanzmethoden
PerformanceTimingConfidence.toJSON()-
Gibt eine JSON-Repräsentation des
PerformanceTimingConfidence-Objekts zurück.
Beschreibung
Wenn eine Website nach einem "Kaltstart" des Browsers oder einer Sitzungswiederherstellung geladen wurde, können ihre Seiten aufgrund dessen langsamer geladen werden. Dies kann zu einem erheblichen Unterschied zwischen den realen Dashboard-Metriken und den Leistungsbeobachtungen in Seitenprofilierungstools führen, was es einem Entwickler erschwert, zu verstehen, ob ein Leistungsproblem ein legitimes Anliegen oder ein Ausreißer aufgrund externer Faktoren ist.
Die PerformanceTimingConfidence-Schnittstelle ermöglicht es Entwicklern, dieses Problem zu kompensieren, indem sie eine Schätzung des Browsers zurückgibt (in der value-Eigenschaft), wie wahrscheinlich es ist, dass ein zurückgegebenes Leistungsprotokoll die typische Anwendungsleistung darstellt.
Dies ist ein Wert von entweder "low" oder "high", der das Vertrauen des Browsers in die Messung angibt.
Hinweis: Gerätefaktoren wie die CPU tragen nicht zur Leistungsbewertung bei. Andere Faktoren als der "Kaltstart" des Browsers und die Sitzungswiederherstellung können in zukünftigen Updates berücksichtigt werden.
Um die Möglichkeit der Verwendung des Wertes zur Erstellung von Fingerabdrücken zu verringern, wird dem Schätzwert Rauschen hinzugefügt, was bedeutet, dass der value absichtlich für einen Teil der Ergebnisse falsch sein wird.
Die Auslöserate für das Rauschen wird in der randomizedTriggerRate-Eigenschaft angegeben.
Da dies je nach Aufzeichnung variieren kann, ist eine gewichtete Betrachtung pro Aufzeichnung erforderlich, um unverzerrte Aggregationen zu erhalten, die Datenkonsistenz zu verbessern, die Anzahl kombinierter Fehler zu reduzieren und im Allgemeinen eine Basislinie zu schaffen, an der die gemessenen Ergebnisse bewertet werden können.
Verwendung der Daten
Sie sollten die Daten wie folgt verwenden, um aussagekräftige Informationen aus den zufälligen Werten zu extrahieren:
- Beim Sammeln von
PerformanceNavigationTiming-Aufzeichnungen, sammeln SierandomizedTriggerRateundvaluefür jede Aufzeichnung. - Beim Berechnen von Statistiken wie dem 75. Perzentil des Largest Contentful Paint (LCP) oder der mittleren Seitenladezeit, verwenden Sie die unten erläuterten Gewichtungsformeln anstelle eines einfachen Durchschnitts — dies gibt Ihnen separate, korrigierte Metriken für "typische" Ladungen gegenüber "verschlechterten" Ladungen.
- Verwenden Sie den Mittelwert/Perzentil mit "hohem" Vertrauen als Ihre "reale" Leistungsgrundlage und verwenden Sie den mit "niedrigem" Vertrauen, um zu verstehen, wie typische Daten in Kaltstart-Szenarien aussehen.
Die unten stehenden Verfahren veranschaulichen, wie Gewichtung basierend auf value angewendet werden kann, bevor zusammenfassende Statistiken basierend auf den Vertrauensdaten berechnet werden.
Berechnen nicht verzerrter Mittelwerte
Um nicht verzerrte Mittelwerte für sowohl high und low Werte zu berechnen:
- Für jede Aufzeichnung:
- Lassen Sie
pdierandomizedTriggerRateder Aufzeichnung sein. - Lassen Sie
cdenvalueder Aufzeichnung sein. - Lassen Sie
R1sein, wennchighist, andernfalls0.
- Lassen Sie
- Berechnen Sie das pro Aufzeichnung Gewicht
wbasierend aufc:- Zur Schätzung des
high-Mittels:w = (R - (p / 2)) / (1 - p). - Zur Schätzung des
low-Mittels:w = ((1 - R) - (p / 2)) / (1 - p).Hinweis:
wkann für einige Aufzeichnungen negativ sein; Sie sollten jede Aufzeichnung behalten. - Lassen Sie
weighted_duration = duration * w(sieheduration).
- Zur Schätzung des
- Lassen Sie
total_weighted_durationdie Summe derweighted_duration-Werte über alle Aufzeichnungen hinweg sein. - Lassen Sie
sum_weightsdie Summe derw-Werte über alle Aufzeichnungen hinweg sein. - Lassen Sie
debiased_mean = total_weighted_duration / sum_weights, vorausgesetztsum_weightsist nicht nahe null.
Berechnen nicht verzerrter Perzentile
Um nicht verzerrte Perzentile für sowohl high als auch low zu berechnen:
- Folgen Sie den Schritten für das Berechnen nicht verzerrter Mittelwerte, um ein Pro-Aufzeichnung-Gewicht
wzu berechnen. - Lassen Sie
sum_weightsdie Summe derw-Werte über alle Aufzeichnungen hinweg sein. - Lassen Sie
sorted_recordsalle Aufzeichnungen nach Dauer aufsteigend sortiert sein. - Für ein gewünschtes Perzentil (0-100), berechnen Sie
q = percentile / 100.0. - Gehen Sie
sorted_recordsdurch und für jede Aufzeichnung:- Berechnen Sie das kumulative Gewicht
cwpro Aufzeichnung:cw = sum_{i: duration_i <= duration_j} w_i. - Berechnen Sie die nicht verzerrte kumulative Verteilungsfunktion pro Aufzeichnung:
cdf = cw / sum_weights.
- Berechnen Sie das kumulative Gewicht
- Finden Sie den ersten Index
idx, wocdf >= q.- Wenn
idx0ist, geben Siedurationfürsorted_records[0]zurück. - Wenn kein solcher
idxexistiert, geben Siedurationfürsorted_records[n]zurück.
- Wenn
- Berechnen Sie den Interpolationsanteil:
- Lassen Sie
lower_cdfdascdffürsorted_records[idx-1]sein. - Lassen Sie
upper_cdfdascdffürsorted_records[idx]sein. - Wenn
lower_cdf = upper_cdf, geben Siedurationfürsorted_records[idx]zurück. - Ansonsten:
- Lassen Sie
ifrac = (q - lower_cdf) / (upper_cdf - lower_cdf). - Lassen Sie
lower_durationdiedurationfürsorted_records[idx-1]sein. - Lassen Sie
upper_durationdiedurationfürsorted_records[idx]sein. - Geben Sie
lower_duration + (upper_duration - lower_duration) * ifraczurück.
- Lassen Sie
- Lassen Sie
Beispiele
>Grundlegende Verwendung
Dieses Beispiel verwendet einen PerformanceObserver, um Vertrauensdaten von beobachteten PerformanceNavigationTiming-Einträgen abzurufen.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log(
`${entry.name} confidence: ${entry.confidence.value}`,
`Trigger rate: ${entry.confidence.randomizedTriggerRate}`,
);
});
});
observer.observe({ type: "navigation", buffered: true });
Spezifikationen
| Spezifikation |
|---|
| Navigation Timing Level 2> # sec-performance-timing-confidence> |