Limited availability
Experimentell: Dies ist eine experimentelle Technologie
Ãberprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Hinweis: Diese Funktion ist in Web Workers verfügbar, mit Ausnahme von Service Workers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die Compute Pressure API ist eine JavaScript-API, die es Ihnen ermöglicht, den Druck von Systemressourcen wie der CPU zu beobachten.
AnwendungsfälleIn Echtzeitanwendungen, wie z.B. Videokonferenz-Web-Apps, ermöglicht Ihnen die Compute Pressure API zu erkennen, welchem Druck das System derzeit ausgesetzt ist. Das System wird mit jeglichem Stress so gut es geht umgehen, aber eine Zusammenarbeit zwischen System und App ist nützlich, um den Druck bestmöglich zu bewältigen. Diese API benachrichtigt Sie über hochrangige Ãnderungen des Druckzustands, sodass Sie Ihre Arbeitslasten anpassen und trotzdem eine angenehme Benutzererfahrung bieten können. Das Signal wird proaktiv gesendet, wenn der Systemdrucktrend entweder steigt oder nachlässt, um eine rechtzeitige Anpassung zu ermöglichen.
Sie können diese Druckwechselsignale z.B. nutzen, um die Videoqualität zu reduzieren oder zu erhöhen oder die Anzahl der gleichzeitig angezeigten Videostreams zu verringern, um zu vermeiden, dass Videoruckler auftreten, Audioschnitten zu hören sind oder andere kritische Teile der Anwendung verzögert werden. Die Servicequalität Ihrer Web-App kann auch durch Druck von äuÃeren Faktoren und Anwendungen zu unerwarteten Zeiten variieren, aber idealerweise führt dies nicht zu einem totalen Systemausfall, Eingabeverzögerung oder Unansprechbarkeit. Stattdessen wird die Menge der aktivierten Funktionen und deren Qualitätsniveau gegen den Ressourcendruck des Geräts des Endnutzers abgewogen. Dies ist ähnlich wie bei Druck auf das Netzwerk, bei dem eine Streaming-App sich an die verfügbare Bandbreite anpasst.
Weitere Anwendungsfälle sind:
Schnelle und ansprechende Webanwendungen sollten die Arbeitslasten ausbalancieren, wenn die Rechenressourcen des Systems mit (nahezu) voller Kapazität genutzt werden. Ziel der Compute Pressure API ist es, schlechte Benutzererfahrungen nicht nur zu mildern, sondern zu verhindern, dass das Gerät des Benutzers zu heiÃ, zu laut wird oder die Batterie in unakzeptabler Geschwindigkeit entladen wird. Daher wird empfohlen, diese API gegenüber Rückmeldemechanismen oder einzelnen Leistungsanpassungen (z.B. durch das Absenken der Frequenz von window.requestAnimationFrame
) zu bevorzugen, bei denen schlechte Benutzererfahrungen möglicherweise gemildert, jedoch nicht proaktiv vermieden werden. Um die Leistung von Benutzersitzungen im Nachhinein zu messen und zu segmentieren, eignet sich die PerformanceLongTaskTiming
API besser zur Analyse von Aufgaben, die den UI-Thread 50 Millisekunden oder länger belegen (siehe auch Performance API für zusätzliche Leistungsmesstools).
In Ihrer Web-App oder Webseite konkurrieren verschiedene Aufgaben um die Prozesszeit unterschiedlicher Verarbeitungseinheiten (CPU, GPU und andere spezialisierte Verarbeitungseinheiten). Die aktuelle Version der Compute Pressure API-Spezifikation definiert zwei Hauptquellenarten, die abgefragt werden können, um Druckinformationen zu sammeln:
"thermals"
steht für den globalen thermischen Zustand des gesamten Systems."cpu"
steht für den durchschnittlichen Druck der zentralen Verarbeitungseinheit (CPU) über all ihre Kerne hinweg. Dieser Zustand kann von anderen Apps und Webseiten als der beobachtenden beeinflusst werden.Die Liste der unterstützten Quellen variiert je nach Browser, Betriebssystem und Hardware und entwickelt sich weiter. Verwenden Sie den statischen Hinweis PressureObserver.knownSources
, um zu sehen, welche Quellentypen in Ihrem Browser verfügbar sind. Beachten Sie, dass die Verfügbarkeit auch durch Ihr Betriebssystem und Ihre Hardware variieren kann. Rufen Sie observe()
auf und prüfen Sie auf einen NotSupportedError
, um festzustellen, ob Druckbeobachtung möglich ist.
Die Compute Pressure API ist in den folgenden Kontexten verfügbar:
Window
(Haupt-Thread)Worker
SharedWorker
<iframe>
(sofern eine geeignete Permissions-Policy vorhanden ist)Die Compute Pressure API stellt hochrangige Druckzustände bereit, die die Komplexitäten von Systemengpässen abstrahieren, die mit niedrigrangigen Metriken wie Prozessortaktfrequenz und Auslastung nicht adäquat erklärt werden können. Tatsächlich sind Metriken zur CPU-Auslastung oft irreführend. Daher verwendet die Compute Pressure API lesbare Druckzustände mit den folgenden Bedeutungen (siehe auch die Spezifikation):
"nominal"
: Die Bedingungen des Zielgeräts sind auf einem akzeptablen Niveau ohne spürbare negative Auswirkungen auf den Benutzer."fair"
: Der Druck, die Temperatur und/oder der Energieverbrauch des Zielgeräts sind leicht erhöht, was möglicherweise zu einer verkürzten Batterielaufzeit führt, sowie zum Aktivieren und Hören von Lüftern (oder Systemen mit Lüftern). Abgesehen davon läuft das Zielgerät einwandfrei und kann zusätzliche Aufgaben übernehmen."serious"
: Der Druck, die Temperatur und/oder der Energieverbrauch des Zielgeräts ist durchgängig stark erhöht. Das System kann als GegenmaÃnahme gedrosselt werden, um die Thermik zu reduzieren."critical"
: Die Temperatur des Zielgeräts oder Systems ist deutlich erhöht und es muss heruntergekühlt werden, um potenzielle Probleme zu vermeiden.Die beitragenden Faktoren (d.h. die zugrunde liegenden Systemmetriken) für die oben genannten Druckzustände sind nicht von der Spezifikation definiert und können je nach zugrunde liegender Hardware und Plattformverhalten variieren. Die Spezifikation verlangt jedoch, dass die Ãnderung der beitragenden Faktoren erheblich sein muss, um ein ständiges Hin- und Herwechseln zwischen den Zuständen zu vermeiden. Das bedeutet, Sie können davon ausgehen, dass die API nicht zu oft unterschiedliche Zustände meldet, da sie nicht nur auf eine einzige schwankende Systemmetrik reagiert.
Sicherheits- und DatenschutzüberlegungenDie Compute Pressure API ist durch die Policy gesteuert durch die "compute-pressure"
-Direktive. Ihre Standard-Erlaubnisliste ist 'self'
, was die Nutzung in gleichartigen eingebetteten Frames erlaubt, aber Drittanbieterinhalte daran hindert, das Feature zu nutzen.
Die folgenden Schnittstellen sind in der Compute Pressure API vorhanden und die API-Oberfläche ähnelt anderen Beobachtern wie IntersectionObserver
, MutationObserver
oder PerformanceObserver
.
PressureObserver
Experimentell
Benachrichtigt, wenn sich der Druck des Systems für eine angegebene Anzahl von Quellen (z.B. die CPU) bei einem vordefinierten Abtastintervall ändert.
PressureRecord
Beschreibt den Drucktrend zu einem bestimmten Ãbergangsmoment.
Permissions-Policy
; die compute-pressure
-Direktive
Steuert den Zugriff auf die Compute Pressure API.
Dieses Beispiel erstellt einen PressureObserver
und ergreift MaÃnahmen, wann immer es zu einer Druckänderung kommt. Das Abtastintervall ist auf 1000ms eingestellt, was bedeutet, dass es höchstens einmal pro Sekunde Aktualisierungen gibt.
function callback(records) {
const lastRecord = records[records.length - 1];
console.log(`Current pressure ${lastRecord.state}`);
if (lastRecord.state === "critical") {
// disable video feeds
} else if (lastRecord.state === "serious") {
// disable video filter effects
} else {
// enable all video feeds and filter effects
}
}
try {
const observer = new PressureObserver(callback);
await observer.observe("cpu", {
sampleInterval: 1000, // 1000ms
});
} catch (error) {
// report error setting up the observer
}
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4