Timer mit Einschränkungen der ursprungsübergreifenden Isolierung ausrichten

Vor Version 91 waren die Timerauflösungen in Chrome auf 5 Mikrosekunden auf dem Computer beschränkt, wenn die Website-Isolierung aktiviert ist, und auf 100 Mikrosekunden auf Android-Geräten, wenn sie deaktiviert ist.

Ab Version 91 wird in Chrome aufgrund einer Änderung der Spezifikation die Auflösung expliziter Timer (performance.now(), performance.timeOrigin und andere Leistungs-APIs, die DOMHighResTimestamps bereitstellen) auf 100 Mikrosekunden beschränkt. Wenn Sie die ursprungsübergreifende Isolation aktivieren, können Websites die Einschränkung unabhängig von der Plattform auf 5 Mikrosekunden lockern.

Ein ähnlicher Ansatz wird auf SharedArrayBuffer beschrieben: Durch die Aktivierung der ursprungsübergreifenden Isolierung lassen sich leistungsstärkere Funktionen nutzen. Bei der plattformübergreifenden Isolierung wird eine Webseite von anderen Ursprüngen isoliert, mit Ausnahme derjenigen, die aktiviert wurden.

Muss ich etwas unternehmen?

Wahrscheinlich nicht. performance.now() ist in anderen Browsern auf deutlich gröbere Auflösungen beschränkt (z. B. 1 Millisekunde = 0,001 Sekunden). Sie sollten sich also nicht auf die aktuelle Auflösung verlassen.

Wenn Sie gleichzeitig von einer höheren Auflösung für Ihre Timer profitieren möchten, z. B. für genauere Leistungsmessungen, muss Ihre Website ursprüngsübergreifend isoliert sein. Dadurch erhalten Sie eine bessere Auflösung sowohl in Chrome als auch in anderen Chromium-basierten Browsern und in Firefox.

Was haben Timer mit der ursprungsübergreifenden Isolierung zu tun?

Nach der Entdeckung von Spectre haben die Browseranbieter beschlossen, die Timer auf gröbere Auflösungen zu beschränken und die Verfügbarkeit von SharedArrayBuffers, die als implizite Timer verwendet werden können, einzuschränken. Das liegt daran, dass Spectre und ähnliche Angriffe auf die spekulative Ausführung Timer verwenden, um die Zeit bestimmter Vorgänge zu messen und dann den Inhalt des Prozessspeichers zu erraten.

Spekulative Ausführungsangriffe können zwar mit groben Timern ausgeführt werden, aber Timer mit hoher Auflösung können sie beschleunigen. Chrome nutzte seine Website-Isolationsarchitektur sowie andere Mechanismen, um das Risiko zu minimieren und diese Funktionen wieder zu aktivieren. Sie sind jedoch nur auf Desktop-Plattformen und in Chromium-Browsern verfügbar. APIs, die auf der zugrunde liegenden Browserarchitektur basieren, sind nicht wirklich ideal.

Die ursprungsübergreifende Isolierung bietet die Standardbasis für Browser, um Seiten in einer isolierten Umgebung auszuführen, sodass sie keine unerwünschten ursprungsübergreifenden Ressourcen laden können und daher nicht von Spectre bedroht sind. Mit der plattformübergreifenden Isolation können wir Seiten jetzt den Zugriff auf hochauflösende Timer,SharedArrayBuffer und andere APIs erlauben, die in Prozessen, die beliebige plattformübergreifende Daten lesen können, nicht freigegeben werden sollten.

Weitere Informationen zu den Hintergründen dieser Änderung finden Sie im Hilfeartikel Warum Sie für leistungsstarke Funktionen „cross-origin isolated“ benötigen.

Titelbild von Linda Perez Johannessen auf Unsplash