Одним із можливих способів зменшити навантаження на центральний процесор є використання так званого null transform hack, який часто називають щось на зразок срібної кулі . У багатьох випадках це суттєво покращить ефективність візуалізації у веб-переглядачах WebKit та Blink, таких як Chrome, Opera та Safari.
Використання "зламу нульового перетворення" (апаратний режим композитування)
Хак нульового перетворення в основному робить дві речі:
- Він вмикає апаратний режим композитування (за умови, що він підтримується для платформи)
- Він створює новий шар із власною опорною поверхнею
Щоб "примусити" браузер, просто додайте до елемента одну з цих властивостей CSS:
transform: translateZ(0);
transform: translate3d(0, 0, 0);
Під час роботи з 3D-перетвореннями добре мати такі властивості, щоб покращити продуктивність :
backface-visibility: hidden;
perspective: 1000;
Застереження "нульового перетворення хака"
Увімкнення апаратного прискорення в CSS3 для багатьох об’єктів може сповільнити продуктивність!
Очевидно, кожне нульове 3D-перетворення створює новий шар. Однак створення шару з примусовим злому не завжди може бути рішенням певних вузьких місць продуктивності на сторінці. Методи створення шарів можуть підвищити швидкість сторінки, але вони мають свою вартість: вони займають пам’ять в системній оперативній пам’яті та на графічному процесорі. Отже, навіть якщо графічний процесор робить хорошу роботу, передача багатьох об’єктів може бути проблемою, так що використання прискорення графічного процесора може не коштувати того. Цитата з W3C :
Однак налаштування елемента у свіжому шарі є відносно дорогою операцією, яка може затримати початок анімації перетворення на помітну частку секунди.
Переміщення кількох великих об'єктів має вищу ефективність, ніж переміщення великої кількості дрібних предметів при використанні 3D-прискорення. Отже, ними потрібно грамотно користуватися, і вам потрібно переконатися, що апаратне прискорення вашої операції дійсно сприятиме підвищенню продуктивності вашої сторінки, а також, що вузьке місце продуктивності не спричинене іншою операцією на вашій сторінці.
Більше того, графічний процесор розроблений спеціально для виконання складних математичних / геометричних розрахунків, і операції розвантаження на графічний процесор можуть забезпечити значне споживання енергії . Очевидно, що коли апаратне забезпечення спрацьовує, це робить і акумулятор цільового пристрою.
Сучасний спосіб: will-changeвласність
Прогрес не стоїть на одному місці ... W3C представив will-changeвластивість CSS. Якщо коротко, will-changeвластивість дозволяє заздалегідь повідомити браузер про те, які зміни ви, можливо, внесете в елемент, щоб він міг налаштувати відповідні оптимізації до того, як вони знадобляться.
Ось що вони говорять у проекті :
will-changeВластивість , певне в даному описі , дозволяє автору оголосити вперед-Несвоєчасне , які властивості можуть змінитися в майбутньому, тому UA може встановити відповідні оптимізації деякий час , перш ніж вони необхідні. Таким чином, коли відбувається фактична зміна, сторінка швидко оновлюється.
Використовуючи will-changeнатяк на браузер про майбутню трансформацію, можна настільки просто, як додати це правило до елемента, який ви очікуєте перетворити:
will-change: transform;
Розробляючи для мобільних пристроїв, розробники змушені враховувати широкий спектр обмежень пристроїв під час написання мобільних веб-програм. Браузери стають розумнішими, і іноді краще залишити рішення на самій платформі, замість того, щоб перекривати прискорення і змушувати поведінку хакерським чином.