Signatur
Beschreibung
Die schreibgeschützte Eigenschaft value des Interfaces PerformanceTimingConfidence gibt an, wie verlässlich ein Leistungsdatensatz ist. Sie zeigt, ob ein Messwert die normale Leistung der Anwendung abbildet oder ob äußere Umstände ihn wahrscheinlich verfälscht haben. Solche Umstände sind z. B. ein Kaltstart des Browsers, die Wiederherstellung einer Sitzung oder ein stark ausgelastetes Gerät. Das zugehörige Objekt erhält man derzeit über PerformanceNavigationTiming.confidence.
Mögliche Werte sind:
"high": Der Datensatz spiegelt die typische Leistung der Anwendung wahrscheinlich richtig wider."low": Der Datensatz ist wahrscheinlich durch Faktoren verfälscht, die nichts mit der Anwendung zu tun haben. Solche Messwerte sollte man in der Auswertung getrennt betrachten oder herausfiltern.
Zum Schutz der Privatsphäre ist der Wert absichtlich verrauscht. Mit der Wahrscheinlichkeit, die in PerformanceTimingConfidence.randomizedTriggerRate steht, wird value zufällig gewählt und nicht aus dem tatsächlichen Zustand abgeleitet. Ein einzelner Wert ist deshalb nie ganz sicher. Nützlich wird die Eigenschaft erst, wenn man viele Datensätze gesammelt auswertet (Real User Monitoring, RUM) und die Zufallsrate dabei herausrechnet.
Rückgabewert
"high" bei hohem Vertrauen, "low" bei geringem Vertrauen in den Datensatz. Der Wert kann zufällig verfälscht sein (siehe randomizedTriggerRate).Beispiele
Vertrauensmaß des Navigationseintrags auslesen
const [nav] = performance.getEntriesByType('navigation');
if (nav?.confidence) {
const { value, randomizedTriggerRate } = nav.confidence;
console.log(`Vertrauen: ${value}`);
console.log(`Zufallsrate: ${randomizedTriggerRate}`);
} else {
console.log('PerformanceTimingConfidence wird nicht unterstützt.');
}
Vertrauensmaß zusammen mit RUM-Daten senden
const sendNavigationMetrics = () => {
const [nav] = performance.getEntriesByType('navigation');
if (!nav) return;
const payload = {
url: location.pathname,
ttfb: Math.round(nav.responseStart - nav.startTime),
loadTime: Math.round(nav.loadEventEnd - nav.startTime),
// Fallback 'unknown' für Browser ohne Unterstützung
confidence: nav.confidence?.value ?? 'unknown',
triggerRate: nav.confidence?.randomizedTriggerRate ?? null
};
navigator.sendBeacon('/rum', JSON.stringify(payload));
};
addEventListener('pagehide', sendNavigationMetrics, { once: true });
Echten Anteil unzuverlässiger Messungen auf dem Server schätzen
// records: gesammelte Datensätze mit { confidence, triggerRate }
const estimateTrueLowRate = (records) => {
const valid = records.filter((r) => r.confidence !== 'unknown');
if (valid.length === 0) return null;
const observedLow = valid.filter((r) => r.confidence === 'low').length / valid.length;
const rate = valid.reduce((sum, r) => sum + r.triggerRate, 0) / valid.length;
// Mit Wahrscheinlichkeit 'rate' ist der Wert zufällig (je 50 % high/low)
const estimate = (observedLow - rate / 2) / (1 - rate);
return Math.min(1, Math.max(0, estimate));
};
const sample = [
...Array(70).fill({ confidence: 'high', triggerRate: 0.5 }),
...Array(30).fill({ confidence: 'low', triggerRate: 0.5 })
];
console.log(estimateTrueLowRate(sample).toFixed(2));
// Wichtig · Fallstricke
- Experimentell: Derzeit unterstützen nur Chromium-basierte Browser die Eigenschaft. Prüfe deshalb immer mit
nav.confidence?.value, ob sie vorhanden ist, bevor du sie verwendest. - Absichtlich verrauscht: Einem einzelnen Wert kann man nicht trauen, er kann zufällig gesetzt sein. Treffe keine Entscheidungen für einzelne Nutzer anhand von
value(z. B. Funktionen abschalten). Werte die Eigenschaft nur statistisch über viele Datensätze aus und rechne dabeirandomizedTriggerRateheraus. - Der Wert beschreibt nur die Umstände der Messung, nicht die Qualität deiner Seite. Ein
"low"heißt nicht, dass die Seite langsam ist. - Die Eigenschaft ist schreibgeschützt. Zuweisungen werden stillschweigend ignoriert und werfen im Strict Mode keinen Fehler, weil es sich um einen Getter ohne Setter handelt.
- Mit
toJSON()lässt sich das Objekt direkt serialisieren, z. B. überJSON.stringify(nav.confidence).