PerformanceTimingConfidence
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die Schnittstelle PerformanceTimingConfidence bietet Zugriff auf Informationen, die angeben, ob ein Leistungseintrag die typische Leistung einer Anwendung widerspiegelt oder wahrscheinlich durch externe Faktoren beeinflusst wird.
Auf das PerformanceTimingConfidence-Objekt eines Navigation-Timing-Eintrags wird über die Eigenschaft confidence der Schnittstelle PerformanceNavigationTiming zugegriffen.
Instanzeigenschaften
PerformanceTimingConfidence.randomizedTriggerRateSchreibgeschützt-
Eine Zahl, die angibt, wie häufig bei der Bereitstellung von
valueRauschen hinzugefügt wird. PerformanceTimingConfidence.valueSchreibgeschützt-
Ein Aufzählungswert, der grob angibt, wie sicher es ist, dass ein Leistungseintrag die typische Leistung einer Anwendung widerspiegelt oder wahrscheinlich durch externe Faktoren beeinflusst wird.
Instanzmethoden
PerformanceTimingConfidence.toJSON()-
Gibt ein JSON-serialisierbares einfaches Objekt zurück, das das
PerformanceTimingConfidence-Objekt darstellt. Wird vonJSON.stringify()automatisch aufgerufen.
Beschreibung
Wenn eine Website nach einem „Kaltstart“ des Browsers oder der Wiederherstellung einer Sitzung geladen wird, können ihre Seiten langsamer laden. Dadurch kann ein erheblicher Unterschied zwischen Dashboard-Metriken aus der Praxis und Leistungsmessungen in Tools zur Seitenprofilierung entstehen. Für Entwickler ist dann schwer zu erkennen, ob ein Leistungsproblem tatsächlich relevant ist oder ein durch externe Faktoren verursachter Ausreißer.
Die Schnittstelle PerformanceTimingConfidence hilft Entwicklern, dieses Problem zu berücksichtigen: Sie liefert in der Eigenschaft value eine Einschätzung des Browsers, wie wahrscheinlich es ist, dass ein zurückgegebener Leistungseintrag die typische Leistung der Anwendung repräsentiert.
Der Wert ist entweder "low" oder "high" und gibt an, wie sicher sich der Browser bei der Messung ist.
Hinweis: Gerätefaktoren wie die CPU fließen nicht in die Leistungsbewertung ein. In zukünftigen Versionen könnten neben dem „Kaltstart“ des Browsers und der Sitzungswiederherstellung weitere Faktoren berücksichtigt werden.
Um die Möglichkeit zu verringern, den Wert für Fingerprinting zu verwenden, wird der Einschätzung Rauschen hinzugefügt. Das bedeutet, dass value bei einem Teil der Ergebnisse absichtlich falsch ist.
Die Häufigkeit, mit der dieses Rauschen ausgelöst wird, steht in der Eigenschaft randomizedTriggerRate.
Da diese Häufigkeit zwischen den Einträgen variieren kann, müssen die einzelnen Einträge gewichtet werden, um unverzerrte aggregierte Werte zu erhalten. Dies verbessert die Konsistenz der Daten, verringert die Anzahl sich überlagernder Fehler und liefert allgemein eine Vergleichsgrundlage für die Bewertung der Messergebnisse.
Daten verwenden
Um aus den randomisierten Werten aussagekräftige Informationen zu gewinnen, gehen Sie wie folgt vor:
- Erfassen Sie beim Sammeln von
PerformanceNavigationTiming-Einträgen für jeden EintragrandomizedTriggerRateundvalue. - Wenden Sie bei der Berechnung von Statistiken wie dem 75. Perzentil des Largest Contentful Paint (LCP) oder der durchschnittlichen Seitenladezeit statt eines einfachen Durchschnitts die unten erläuterten Gewichtungsformeln an. So erhalten Sie getrennte, korrigierte Metriken für „typische“ und „beeinträchtigte“ Ladevorgänge.
- Verwenden Sie den Mittelwert beziehungsweise das Perzentil mit
"high"als Vergleichsgrundlage für die „tatsächliche“ Leistung. Anhand der Werte mit"low"können Sie nachvollziehen, wie typische Daten in Kaltstart-Szenarien aussehen.
Die folgenden Verfahren zeigen, wie die auf value basierende Gewichtung angewendet werden kann, bevor zusammenfassende Statistiken aus den Konfidenzdaten berechnet werden.
Unverzerrte Mittelwerte berechnen
So berechnen Sie unverzerrte Mittelwerte für die Werte high und low:
- Für jeden Eintrag:
- Setzen Sie
pauf den Wert vonrandomizedTriggerRatedes Eintrags. - Setzen Sie
cauf den Wert vonvaluedes Eintrags. - Setzen Sie
Rauf1, wenncgleichhighist, andernfalls auf0.
- Setzen Sie
- Berechnen Sie das Gewicht
wfür jeden Eintrag anhand vonc:- Zur Schätzung des Mittelwerts für
high:w = (R - (p / 2)) / (1 - p). - Zur Schätzung des Mittelwerts für
low:w = ((1 - R) - (p / 2)) / (1 - p).Hinweis:
wkann für manche Einträge negativ sein; behalten Sie dennoch jeden Eintrag bei. - Setzen Sie
weighted_duration = duration * w(sieheduration).
- Zur Schätzung des Mittelwerts für
- Setzen Sie
total_weighted_durationauf die Summe derweighted_duration-Werte aller Einträge. - Setzen Sie
sum_weightsauf die Summe derw-Werte aller Einträge. - Berechnen Sie
debiased_mean = total_weighted_duration / sum_weights, sofernsum_weightsnicht nahe null liegt.
Unverzerrte Perzentile berechnen
So berechnen Sie unverzerrte Perzentile für high und low:
- Befolgen Sie die Schritte unter Unverzerrte Mittelwerte berechnen, um für jeden Eintrag ein Gewicht
wzu berechnen. - Setzen Sie
sum_weightsauf die Summe derw-Werte aller Einträge. - Setzen Sie
sorted_recordsauf alle Einträge, aufsteigend nachdurationsortiert. - Berechnen Sie für das gewünschte Perzentil (0–100)
q = percentile / 100.0. - Durchlaufen Sie
sorted_recordsund führen Sie für jeden Eintrag Folgendes aus:- Berechnen Sie das kumulierte Gewicht
cwfür den Eintrag:cw = sum_{i: duration_i <= duration_j} w_i. - Berechnen Sie den Wert der unverzerrten kumulativen Verteilungsfunktion für den Eintrag:
cdf = cw / sum_weights.
- Berechnen Sie das kumulierte Gewicht
- Suchen Sie den ersten Index
idx, für dencdf >= qgilt.- Wenn
idxgleich0ist, geben Siedurationfürsorted_records[0]zurück. - Wenn kein solcher Index
idxexistiert, geben Siedurationfürsorted_records[n]zurück.
- Wenn
- Berechnen Sie den Interpolationsfaktor:
- Setzen Sie
lower_cdfaufcdffürsorted_records[idx-1]. - Setzen Sie
upper_cdfaufcdffürsorted_records[idx]. - Wenn
lower_cdf = upper_cdfgilt, geben Siedurationfürsorted_records[idx]zurück. - Andernfalls:
- Setzen Sie
ifrac = (q - lower_cdf) / (upper_cdf - lower_cdf). - Setzen Sie
lower_durationaufdurationfürsorted_records[idx-1]. - Setzen Sie
upper_durationaufdurationfürsorted_records[idx]. - Geben Sie
lower_duration + (upper_duration - lower_duration) * ifraczurück.
- Setzen Sie
- Setzen Sie
Beispiele
>Grundlegende Verwendung
In diesem Beispiel wird ein PerformanceObserver verwendet, um Konfidenzdaten aus 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> |