Chrome - background-size: cover; галерея на основе вызывает проблемы с производительностью - PullRequest
0 голосов
/ 06 декабря 2018

Я создаю приложение, используя Vue 2. Есть страница, которая содержит простую галерею изображений, содержащую около 20 изображений и одно большое фоновое изображение страницы.

Фоновое изображение самой страницы фактически содержитсяв фиксированном элементе div, который position: fixed;, имеет 100% width и height и использует background-size: cover; для отображения изображения.

Все ~ 20 элементов в галерее такжеиспользуются элементы div, а *3011* отображается в сетке из 3 столбцов, а изображения отображаются с использованием динамически генерируемого свойства CSS background-url с использованием вычисляемого свойства Vue.Пути к изображениям никогда не меняются, поэтому они не пересчитываются постоянно AFAIK.

Производительность этой страницы в Chrome ужасна, загрузка занимает вечность (хотя это некоторые изображения с высоким разрешением, хотя и шириной 4K)и как только изображения загружены, я могу немного взаимодействовать со страницей, но все становится крайне медленным, и иногда страница перестает отвечать на запросы полностью.

С другой стороны, в Firefox и Edge все в основном маслянисто гладко, как во времязагрузка изображений и во время прокрутки / рендеринга.Взаимодействие с приложением никогда не блокируется.

Я помню, как пытался это исправить, заменяя элементы div обычными тегами img и загружая изображения с их использованием.Кроме того, я пытался кэшировать изображения, я пытался использовать статические URL-адреса изображений для тестирования - то же самое происходит каждый раз - другие браузеры справляются с этим хорошо, Chrome его душит.

Вот скриншотиз сводки производительности за ~ 30 секунд, с момента, когда я нажимаю URL страницы, до момента, когда в основном все загружено, и браузер все еще пытается что-то отобразить и обработать любое взаимодействие со страницей.Очевидно, что этап рисования является проблемой здесь:

Performance screenshot

Есть совет?Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

На этот вопрос сложно ответить, так как это очень специфическая проблема.

Вы можете проанализировать, что вызывает такое поведение в chrome, с помощью инструментов разработчика:

  1. ОткройтеИнструменты разработчика в Chrome, нажав «Ctrl + Shift + I».
  2. Перейдите на вкладку «Производительность».
  3. Нажмите кнопку записи и выполните действие, которое имеет низкую производительность.
  4. Нажмите «Стоп», и вы получите представление о том, что произошло в фоновом режиме.

Если вы не обнаружили проблему с предложенным выше предложением, вы можете опубликовать подробный снимок экрана с разбивкой производительности здесь, яможет быть в состоянии помочь вам с этим.

...