Краткие факты
-
SameSite Cookie
Восстановить силу на - устарел
TLS1.0
а такжеTLS1.1
-
Web animations API
возобновить - Поддержка автономной загрузки данных веб-страниц
- Поддержка блокировки пробуждения
-
Web Assembly SIMD
перейти на экспериментальную стадию -
DevTools
новыйIssues
Вкладка -
JavaScript
Поддержка приватных методов -
JavaScript
Поддержка слабых ссылок
обновление безопасности
Отменить изменения файлов cookie SameSite
В апреле,Chrome
временно отложеноSameSite Cookie
свойства реализованы для обеспечения того, чтобыCOVID-19
Стабильность веб-сайта, предоставляющего основные услуги на критическом начальном этапе реагирования.
эти несколько месяцев,Chrome
Слежу за готовностью этих площадок,Chrome 84
заодно восстановитсяSameSite cookie
принудительное вскрытиеChrome 80+
Включить принудительное включение.
Устаревшие TLS1.0 и TLS1.1
TLS (Transport Layer Security) — это защитаHTTPS
соглашение. Его история насчитывает почти 20 летTLS1.0
и его более ранние предшественникиSSL
,TLS1.0
а также1.1
Оба имеют много недостатков:
-
TLS 1.0
и 1.1 используют как MD5, так и SHA-1, которые являются слабыми хэшами при завершении вычисления хэша. -
TLS 1.0
и 1.1 используют MD5 и SHA-1 для подписи сервера. -
TLS 1.0
а 1.1 поддерживает только шифры RC4 и CBC. RC4 сломан и после этого будет удален. Конструкция режима CBC TLS ошибочна и уязвима. -
TLS 1.0
изCBC
Шифр также неправильно строит свой вектор инициализации. -
TLS 1.0
больше не соответствуетPCI-DSS
.
служба поддержкиTLS1.2
является обязательным условием, чтобы избежать вышеперечисленных проблем. Рабочая группа TLS устарелаTLS 1.0
и 1.1. Chrome теперь также устарел и от этих протоколов.
Web animations API
Хром 84 естьWeb animations API
Добавлен ряд ранее не поддерживаемых функций.
Обещайте поддержку
animation.ready
а такжеanimation.finished
служба поддержкиPromise
передача:
const transformAnimation = modal.animate(openModal, openModalSettings);
transformAnimation.finished.then(() => { text.animate(fadeIn, fadeInSettings)});
повышение производительности
на основе событий (т.mousemove
) при создании анимации каждый раз создается новая анимация, что быстро потребляет память и снижает производительность. Чтобы решить эту проблему, в браузере были введены заменяемые анимации, которые реализовали автоматическую очистку, помечая завершенную анимацию как заменяемую и автоматически удаляя ее, если она была заменена другой завершенной анимацией.
elem.addEventListener('mousemove', evt => {
rectangle.animate(
{ transform: translate(${evt.clientX}px, ${evt.clientY}px) },
{ duration: 500, fill: 'forwards' }
);
});
Каждый раз, когда мышь перемещается, браузер пересчитывает положение каждого шарика в середине и создает анимацию для этой новой точки. Теперь браузеры умеют удалять старые анимации, когда:
- После завершения анимации.
- Также завершена одна или несколько анимаций в последовательности композиции.
- Новая анимация предназначена для анимации тех же свойств.
Более плавный композитный режим анимации
Теперь вы можете установить режим компоновки анимации, что означает, что в дополнение к стандартномуreplace
Вне режимов анимация может быть аддитивной. Режим композиции позволяет разработчикам писать различные анимации и контролировать, как комбинируются эффекты. Теперь поддерживаются три составных режима:'replace'
(режим по умолчанию)'add'
,а также'accumulate'
.
по умолчанию'replace'
В композитном режиме окончательная анимация заменитtransform
свойства и в конечном итоге выглядят какrotate(360deg) scale(1.4)
. для'add'
,Composite
Добавляя вращение и умножая масштаб, конечное состояниеrotate(720deg) scale(1.96)
.'accumulate'
Слияние преобразований, результатrotate(720deg) scale(1.8)
.
Content indexing API
использовать только что добавленныйContent Indexing API
Вы можете добавить контент для автономного использованияURL
и метаданные. Затем контент представляется пользователю через эти метаданные, что улучшает возможность обнаружения.
Таким образом, ваш сайт доступен даже при отсутствии интернет-соединения.
Вот пример вызова:
const registration = await navigator.serviceWorker.ready;
await registration.index.add({
// Required; set to something unique within your web app.
id: 'article-123',
// Required; url needs to be an offline-capable HTML page.
// For compatibility during the Origin Trial, include launchUrl as well.
url: '/articles/123',
launchUrl: '/articles/123',
// Required; used in user-visible lists of content.
title: 'Article title',
// Required; used in user-visible lists of content.
description: 'Amazing article about things!',
// Required; used in user-visible lists of content.
icons: [{
src: '/img/article-123.png',
sizes: '64x64',
type: 'image/png',
}],
// Optional; valid categories are currently:
// 'homepage', 'article', 'video', 'audio', or '' (default).
category: 'article',
});
Wake lock API
У вас когда-нибудь возникала проблема, когда вы смотрели на экран компьютера, занимаясь другими делами, а затем компьютер переходил в заставку, не отвечая на запросы в течение длительного времени.
пройти черезWake lock API
Веб-страницы могут запрашивать блокировку пробуждения, чтобы предотвратить затемнение экрана или вход в заставку.
можно использоватьnavigator.wakeLock.request()
Поднимите wakelock и объединитеsetTimeout
Автовыпуск через некоторое время:
// The wake lock sentinel.
let wakeLock = null;
// Function that attempts to request a screen wake lock.
const requestWakeLock = async () => {
try {
wakeLock = await navigator.wakeLock.request('screen');
wakeLock.addEventListener('release', () => {
console.log('Screen Wake Lock was released');
});
console.log('Screen Wake Lock is active');
} catch (err) {
console.error(`${err.name}, ${err.message}`);
}
};
// Request a screen wake lock…
await requestWakeLock();
// …and release it again after 5s.
window.setTimeout(() => {
wakeLock.release();
wakeLock = null;
}, 5000);
Idle Detection API
обнаружение холостого хода (Idle Detection API
) будет уведомлять разработчика, когда пользователь бездействует, указывая на такие вещи, как отсутствие взаимодействия с клавиатурой, мышью, экраном в течение длительного периода времени, активация экранной заставки, блокировка экрана или переход на другой экран. Разработчики могут настраивать пороговые значения для запуска уведомлений.
Следующие сценарии являются хорошими кандидатами для обнаружения простоя:
- Программное обеспечение для чата или сайты социальных сетей в Интернете могут использовать этот API для уведомления пользователей о том, доступны ли их контакты в данный момент.
- Например, такое приложение, как программа музейного показа, может использовать этот API для возврата на домашнюю страницу после отсутствия взаимодействия.
- Приложения, требующие сложных вычислений, таких как рисование диаграмм, могут ограничить эти вычисления тем временем, когда пользователь взаимодействует со своим устройством.
Проверьте, доступно ли обнаружение простоя:
if ('IdleDetector' in window) {
// Idle Detector API supported
}
Пример вызова:
// Create the idle detector
const idleDetector = new IdleDetector();
// Set up an event listener that fires when idle state changes.
idleDetector.addEventListener('change', () => {
const uState = idleDetector.userState;
const sState = idleDetector.screenState;
console.log(`Idle change: ${uState}, ${sState}.`);
});
// Start the idle detector.
await idleDetector.start({
threshold: 60000,
signal,
});
Web Assembly SIMD
SIMD(Single Instruction Multiple Data
), то есть один поток инструкций и множественный поток данных, — это метод, который использует один контроллер для управления несколькими процессорами и одновременно выполняет одну и ту же операцию над каждым набором данных (также известным как «вектор данных»). для достижения техники пространственного параллелизма. Проще говоря, инструкция может обрабатывать несколько фрагментов данных одновременно.
WebAssembly SIMD
Конечная цель предложения — ввести векторные операции вWebAssembly
В спецификации это может значительно ускорить сложные вычислительные приложения, такие как аудио/видеокодеки, приложения для обработки изображений, криптографические приложения и т. д. Хотя он все еще находится на экспериментальной стадии, в настоящее время он широко используется программами с открытым исходным кодом (такими какHalide
,OpenCV.js
,XNNPACK
) поддерживаютсяWebAssembly SIMD
.
Мы можем ясно видетьSIMD
разница в производительности. если нетSIMD
, современные ноутбуки могут воспроизводить только около 3 кадров в секунду, при этом позволяяSIMD
можно получить, когда15-16
Плавный опыт в кадрах в секунду.
Вот более интересный пример «невидимки»:
WebAssembly SIMD
Пробная версия оригинальной версии доступна по адресуChrome 84-86
Экспериментируйте в версии.
Обновление инструментов разработчика
вкладка проблемы
Добавлено в ящикissues
вкладок, цель состоит в том, чтобы уменьшить беспорядок в выводе консоли.
В настоящее время консоль — это веб-разработчики, библиотеки, фреймворки иChrome
Центральное место для регистрации сообщений, предупреждений и ошибок.Issues
Вкладки отображают предупреждения от браузеров в структурированном, агрегированном, действенном виде со ссылками наDevTools
затронутые ресурсы и предоставить рекомендации по устранению этих проблем. Со временем все большеChrome
Предупреждение появится вIssues
Вкладки вместо консолей, что поможет уменьшить беспорядок в консолях.
Обновление панели производительности
Панель «Производительность» теперь отображает информацию об общем времени блока (TBT) в нижнем колонтитуле. TBT — это показатель производительности загрузки, который помогает количественно определить, сколько времени требуется, чтобы страница стала доступной. По сути, он измеряет, как долго страница кажется доступной (поскольку ее содержимое было отображено на экране), но на самом деле недоступна, потому чтоJavaScript
Основной поток заблокирован, поэтому страница не может реагировать на ввод пользователя.TBT
является основной лабораторной метрикой, которая аппроксимирует первую задержку ввода, т.е.Google
новыйCore Web Vitals
один.
получитьTBT
, пожалуйста, не используйтеReload Page
Перезагрузите рабочий процесс страницы, чтобы записать производительность загрузки страницы. вместо этого нажмитеRecord
Запишите, вручную перезагрузите страницу, подождите, пока страница загрузится, затем остановите запись. Если ты видишь,Total Blocking Time: Unavailable
означаетDevTools
невозможноChrome
для получения требуемой информации из внутренних данных профиля.
Кроме того, он поддерживаетCLS
:
Предварительный просмотр изображения
паритьbackground-image
Вы можете увидеть предварительный просмотр изображения во всплывающей подсказке:
V8 v8.4 - Поддержка частных методов
существуетv7.4
Недавно добавленные приватные поля в версии дополнительно поддерживают приватные методы и средства доступа. Синтаксически имена приватных методов и методов доступа начинаются с #, как и приватные поля. Синтаксис кратко описан ниже:
class Component {
#privateMethod() {
console.log("I'm only callable inside Component!");
}
get #privateAccessor() { return 42; }
set #privateAccessor(x) { }
}
Частные методы и методы доступа имеют те же правила области действия и семантику, что и частные поля.
V8 v8.4 - Слабые ссылки
JavaScript
является языком со сборщиком мусора, что означает, что при запуске сборщика мусора память, занятая объектами, к которым программа больше не может получить доступ, может быть автоматически освобождена. КромеWeakMap
И вWeakSet
Помимо цитирования,JavaScript
Все ссылки в являются надежными и предотвращают сборку мусора объекта, на который ссылаются. Например, следующий код: покаglobalRef
Доступный через глобальную область видимости, ни он, ни функции в его свойстве обратного вызова не будут переработаны.
const globalRef = {
callback() { console.log('foo'); }
};
JavaScript
Теперь разработчики могутWeakRef
Функции делают слабые ссылки на объекты. Если на объект, на который ссылается слабая ссылка, также нет строгой ссылки, они не предотвращают его сборку мусора.
const globalWeakRef = new WeakRef({
callback() { console.log('foo'); }
});
(async function() {
globalWeakRef.deref().callback();
await new Promise((resolve, reject) => {
setTimeout(() => { resolve('foo'); }, 42);
});
globalWeakRef.deref()?.callback();
})();