Signatur
Beschreibung
Die Methode getEntriesByName() wird auf dem PerformanceObserverEntryList-Objekt aufgerufen, das der Callback eines PerformanceObserver als erstes Argument erhält. Sie filtert die Einträge, die in diesem Callback-Durchlauf geliefert wurden, nach ihrem name und optional zusätzlich nach ihrem entryType.
Nützlich ist das, wenn man gezielt auf bestimmte Messpunkte reagieren möchte, etwa auf eine eigene Messung mit performance.measure("app-start"), auf die Ressource einer bestimmten URL (bei resource-Einträgen ist name die vollständige URL) oder auf Paint-Einträge wie "first-contentful-paint".
Wichtig: Die Liste enthält nur die Einträge des aktuellen Callback-Aufrufs und nur die Eintragstypen, die mit observe() abonniert wurden. Sie ist also keine globale Zeitleiste wie performance.getEntriesByName(). Die Einträge sind chronologisch nach startTime sortiert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $name Pflicht | string | Name der gesuchten Einträge, z. B. der Name einer Markierung/Messung oder die vollständige URL einer Ressource. Der Vergleich erfolgt exakt und unterscheidet Groß-/Kleinschreibung. | |
| $type | string | Optionaler Eintragstyp (entryType) als zusätzlicher Filter, z. B. "mark", "measure", "resource", "paint". |
Rückgabewert
PerformanceEntry-Objekte (bzw. Unterklassen wie PerformanceMark, PerformanceMeasure, PerformanceResourceTiming), sortiert nach startTime. Gibt es keine Treffer, ist das Array leer.Beispiele
Eigene Messung gezielt auswerten
const observer = new PerformanceObserver((list) => {
// Nur Messungen mit dem Namen "daten-laden"
const entries = list.getEntriesByName("daten-laden", "measure");
entries.forEach((entry) => {
console.log(`${entry.name}: ${entry.duration.toFixed(1)} ms`);
});
});
observer.observe({ entryTypes: ["mark", "measure"] });
const ladeDaten = async () => {
performance.mark("laden-start");
await new Promise((r) => setTimeout(r, 120));
performance.mark("laden-ende");
performance.measure("daten-laden", "laden-start", "laden-ende");
};
ladeDaten();
Ladezeit einer bestimmten Ressource überwachen
const apiUrl = new URL("/api/produkte", location.href).href;
const observer = new PerformanceObserver((list) => {
// name ist bei resource-Einträgen die vollständige URL
const [eintrag] = list.getEntriesByName(apiUrl, "resource");
if (eintrag) {
console.log("API-Antwortzeit:", Math.round(eintrag.responseEnd - eintrag.startTime), "ms");
observer.disconnect();
}
});
observer.observe({ type: "resource", buffered: true });
fetch("/api/produkte");
First Contentful Paint erfassen
new PerformanceObserver((list, obs) => {
const fcp = list.getEntriesByName("first-contentful-paint")[0];
if (fcp) {
console.log("FCP:", Math.round(fcp.startTime), "ms");
obs.disconnect();
}
}).observe({ type: "paint", buffered: true });
// Wichtig · Fallstricke
- Nur aktueller Durchlauf: Die Liste enthält ausschließlich die Einträge, die dem Callback gerade übergeben wurden. Einträge aus früheren Callbacks oder vor dem
observe()-Aufruf fehlen – für Letzterebuffered: trueverwenden. - Nur abonnierte Typen: Wird z. B. nur
\"mark\"beobachtet, liefert ein Filter auf\"measure\"immer ein leeres Array. - Ressourcen-Namen: Bei
resource-Einträgen istnamedie absolute, aufgelöste URL (inkl. Query-String). Relative Pfade finden nichts – mitnew URL(pfad, location.href).hrefnormalisieren. - Der Callback wird asynchron und gebündelt aufgerufen; mehrere Einträge können in einem Durchlauf ankommen, daher immer über das Array iterieren statt nur auf
[0]zu vertrauen, wenn mehrere Treffer möglich sind. - Kompatibilität: In allen modernen Browsern, in Web Workern sowie in Node.js (
perf_hooks, ab v8.5) verfügbar. Welche Eintragstypen unterstützt werden, zeigtPerformanceObserver.supportedEntryTypes.