PerformanceTimingConfidence
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Das PerformanceTimingConfidence-Interface bietet Zugriff auf Informationen, die anzeigen, ob ein Leistungsdatensatz die typische Anwendungsleistung widerspiegelt oder wahrscheinlich durch externe Faktoren beeinträchtigt wurde.
Das PerformanceTimingConfidence-Objekt für jeden Navigationstiming-Eintrag wird über die PerformanceNavigationTiming-Schnittstelle und deren confidence-Eigenschaft abgerufen.
Instanz-Eigenschaften
PerformanceTimingConfidence.randomizedTriggerRateSchreibgeschützt-
Eine Zahl, die angibt, wie oft Rauschen angewendet wird, wenn der
valueoffengelegt wird. PerformanceTimingConfidence.valueSchreibgeschützt-
Ein enumerierter Wert, der ein breites Vertrauensmaß dafür angibt, ob ein Leistungsdatensatz die typische Anwendungsleistung widerspiegelt oder wahrscheinlich durch externe Faktoren beeinträchtigt wurde.
Instanz-Methoden
PerformanceTimingConfidence.toJSON()-
Gibt eine JSON-Darstellung des
PerformanceTimingConfidence-Objekts zurück.
Beschreibung
Wenn eine Website nach einem "Kaltstart" des Browsers oder einer Sitzungswiederherstellung geladen wurde, können die Seiten dadurch langsamer laden. Dies kann zu erheblichen Unterschieden zwischen den realen Dashboard-Metriken und den Leistungsbeobachtungen in Seitenprofilerstellungstools führen, was es für einen Entwickler schwierig macht zu verstehen, ob ein Leistungsproblem ein legitimes Anliegen oder eine durch externe Faktoren verursachte Ausnahme ist.
Das PerformanceTimingConfidence-Interface ermöglicht es Entwicklern, dieses Problem zu kompensieren, indem es eine Schätzung des Browsers zurückgibt (in der value-Eigenschaft), die die Wahrscheinlichkeit angibt, dass ein zurückgegebener Leistungsdatensatz die typische Anwendungsleistung darstellt.
Dies ist entweder ein Wert von "low" oder "high", der das Vertrauen des Browsers in die Messung anzeigt.
Hinweis: Gerätefaktoren wie die CPU tragen nicht zur Leistungsbewertung bei. Andere Faktoren als "Kaltstart" des Browsers und die Sitzungswiederherstellung könnten in zukünftigen Aktualisierungen berücksichtigt werden.
Um die Möglichkeit zu reduzieren, den Wert für Fingerabdrücke zu verwenden, wird dem Schätzwert Rauschen hinzugefügt, was bedeutet, dass der value absichtlich für einen Teil der Ergebnisse falsch sein wird.
Die Auslösungsrate für das Rauschen wird in der randomizedTriggerRate-Eigenschaft angegeben.
Da dies über Datensätze hinweg variieren kann, ist eine Gewichtung pro Datensatz erforderlich, um unvoreingenommene Aggregate wiederherzustellen, die Datenkonsistenz zu verbessern, die Anzahl der zusammengesetzten Fehler zu reduzieren und im Allgemeinen eine Basislinie zu schaffen, gegen die die gemessenen Ergebnisse bewertet werden können.
Verwendung der Daten
Sie sollten die Daten wie folgt verwenden, um sinnvolle Informationen aus den zufälligen Werten zu extrahieren:
- Beim Sammeln von
PerformanceNavigationTiming-Datensätzen, erfassen SierandomizedTriggerRateundvaluefür jeden Datensatz. - Wenn Sie Statistiken wie das 75. Perzentil Largest contentful paint (LCP) oder die durchschnittliche Seitenladezeit berechnen, wenden Sie die unten erklärten Gewichtungsformeln anstelle eines einfachen Durchschnitts an — dies gibt Ihnen separate, korrigierte Metriken für "normale" Ladevorgänge vs. "verschlechterte" Ladevorgänge.
- Verwenden Sie das "high" Vertrauen Durchschnitt/Perzentil als Ihre "reale" Leistungsbasislinie und das "low" Vertrauen, um zu verstehen, wie typische Daten in Kaltstart-Szenarien aussehen.
Die unten stehenden Verfahren veranschaulichen, wie die Gewichtung basierend auf value angewendet werden kann, bevor zusammenfassende Statistiken basierend auf den Vertrauensdaten berechnet werden.
Berechnung unvoreingenommener Mittelwerte
Um unvoreingenommene Mittelwerte für beide high und low Werte zu berechnen:
- Für jeden Datensatz:
- Lassen Sie
pdierandomizedTriggerRatedes Datensatzes sein. - Lassen Sie
cdervaluedes Datensatzes sein. - Lassen Sie
R1sein, wennchighist, sonst0.
- Lassen Sie
- Berechnen Sie das Gewicht
wpro Datensatz basierend aufc:- Zur Schätzung des
highDurchschnitts:w = (R - (p / 2)) / (1 - p). - Zur Schätzung des
lowDurchschnitts:w = ((1 - R) - (p / 2)) / (1 - p).Hinweis:
wkann für einige Datensätze negativ sein; Sie sollten jeden Datensatz behalten. - Lassen Sie
weighted_duration = duration * w(sieheduration).
- Zur Schätzung des
- Lassen Sie
total_weighted_durationdie Summe derweighted_duration-Werte über alle Datensätze sein. - Lassen Sie
sum_weightsdie Summe derw-Werte über alle Datensätze sein. - Lassen Sie
debiased_mean = total_weighted_duration / sum_weights, vorausgesetztsum_weightsist nicht nahe null.
Berechnung unvoreingenommener Perzentile
Um unvoreingenommene Perzentile für beide high und low zu berechnen:
- Folgen Sie den Berechnung unvoreingenommener Mittelwerte-Schritten, um ein Gewicht
wpro Datensatz zu berechnen. - Lassen Sie
sum_weightsdie Summe derw-Werte über alle Datensätze sein. - Lassen Sie
sorted_recordsalle Datensätze sein, die nach Dauer in aufsteigender Reihenfolge sortiert sind. - Für ein gewünschtes Perzentil (0-100), berechnen Sie
q = percentile / 100.0. - Gehen Sie
sorted_recordsdurch und für jeden Datensatz:- Berechnen Sie das kumulative Gewicht
cwpro Datensatz:cw = sum_{i: duration_i <= duration_j} w_i. - Berechnen Sie die unvoreingenommene kumulative Verteilungsfunktion pro Datensatz:
cdf = cw / sum_weights.
- Berechnen Sie das kumulative Gewicht
- Finden Sie den ersten Index
idx, wocdf >= q.- Wenn
idx0ist, geben Sie diedurationfürsorted_records[0]zurück. - Wenn kein solcher
idxexistiert, geben Sie diedurationfürsorted_records[n]zurück.
- Wenn
- Berechnen Sie den Interpolationsbruchteil:
- Lassen Sie
lower_cdfdascdffürsorted_records[idx-1]sein. - Lassen Sie
upper_cdfdascdffürsorted_records[idx]sein. - wenn
lower_cdf = upper_cdf, geben Sie diedurationfürsorted_records[idx]zurück. - Andernfalls:
- 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> |