Вопрос или проблема
У меня есть чрезвычайно раздражающая проблема, когда на мобильных устройствах (проверено в Chrome на Android и iOS, а также в Safari на iOS) всегда используется изображение наибольшего размера из srcset (даже если меньший размер ЯВНО выбран в редакторе).
Вот краткое описание проблемы:
- В редакторе WordPress, при вставке изображения, я выбираю КРУПНЫЙ (720px x 480px) как размер изображения
- На мобильном устройстве загружается и отображается изображение полного размера из srcset каждый раз
Таким образом, проблема двоякая:
- Во-первых, что полное изображение каким-то образом используется, НЕСМОТРЯ на активный выбор большого размера (почему это вообще возможно?)
- Во-вторых, Chrome все равно не учитывает набор src и загружает изображение полного размера
Это проблематично, потому что я намеренно генерирую множество различных размеров изображений, так как оригинальные изображения для этого блога часто довольно большие, часто пара мегабайт. Так что у меня есть запись с 30 изображениями, каждая с сложным набором srcset, и тем не менее Chrome на Android загружает версию в 1.5Mb для каждой из них (это 45Mb на мобильном, хотя есть размеры изображений и srcset — а также лайтбокс и ленивую загрузку, которые я отключил для тестирования — именно по этой причине).
Изображение ниже является скриншотом из инспектора Chrome с использованием удаленной отладки через USB (так что это на самом деле с телефона, а не симуляция браузера). Вы можете увидеть, что фактический атрибут SRC изображения является правильной, меньшей версией изображения (обратите внимание на ‘-720×480’):
http://media.londolozi.com/wp-content/uploads/2017/08/10130833/DSC_3855-720x480.jpg
Однако, Chrome на Android фактически загрузил и обслуживает полное изображение. Я знаю это потому что:
- Изображения в сетевой вкладке показывают статус 200 (не из кеша) и являются изображениями полного размера
- Изображение (и пост) загружается долго (я могу видеть, как изображения загружаются постепенно)
- Нажатие и удерживание для загрузки изображения на телефоне сохраняет полное изображение
- Нажатие и открытие изображения в новой вкладке открывает изображение полного размера
Некоторые другие вещи:
- На настольном компьютере (firefox и chrome) загружается только маленькое изображение
- При каждом тесте я полностью очищаю кеш
- Проблема все равно возникает, если LINK TO установлен на NONE (чтобы исключить возможность вмешательства тега
a
с атрибутомhref
) - Ширина устройства составляет 420px
- Вы можете видеть, что размер изображения «large» был выбран в редакторе WordPress посредством класса ‘size-large’ на изображении, поэтому изображение полного размера не должно загружаться вообще
- Я протестировал это на другом сайте WordPress и та же проблема… выбор размера изображения не влияет на Chrome на Android
- Вы можете сами увидеть это в действии здесь: blog.londolozi.com/2017/08/04/the-week-in-pictures-295/
Так что я не знаю, как объяснить это поведение.
Правильно ли я утверждаю, что если я явно указываю размер при вставке изображения в пост, то изображение, загружаемое браузером, не должно быть больше этого размера, независимо от чего? Или иначе установка размера избыточна.
Есть идеи, почему это происходит?
Я ошибся с моим комментарием и не могу его исправить. Поэтому пишу в виде ответа:
Это, вероятно (99,99%), не проблема WordPress, а проблема Chrome, связанная с его CSS и/или эвристикой изображений. Поэтому:
- Возможно, вам повезёт больше, если вы будете искать помощь на другом сайте сети Stackexchange
- Возможно, ваше время загрузки страницы и CSS-правила заставляют алгоритм/эвристику Chrome отдавать предпочтение полному изображению, и вам следует настроить ваш CSS и ускорить процесс
- Попробуйте использовать изображения уменьшенного размера, небольшого или среднего размера в src, чтобы снизить вероятность использования полных размеров в Chrome на мобильных устройствах/планшетах, потому что по умолчанию будет использоваться маленькое изображение. И увеличивая шансы на использование полных картинок, которые найдутся в srcset, только когда пользователь находится на большом экране.
Дайте мне знать, поможет ли это вам.
браузеры учитывают
коэффициент пикселей
при выборе, какое изображение загрузить, вам следует проверить, равен ли ваш коэффициент пикселей 1, прежде чем пытаться изменить размер браузера и понять логику
Ответ или решение
Задача, с которой вы столкнулись, когда мобильные браузеры, такие как Chrome на Android и iOS, а также Safari на iOS, всегда используют изображение полного размера из атрибута srcset
, несмотря на то, что явно выбрана меньшая версия изображения в редакторе WordPress, весьма распространена. Это может быть связано с рядом факторов, включая особенности работы браузеров и параметры изображений.
Анализ проблемы
-
Выбор размера изображения: В редакторе WordPress вы выбираете размер "LARGE" (720×480 пикселей). Однако, когда изображение загружается на мобильном устройстве, используется его полный размер. Это противоречит ожиданиям, так как вы не хотите, чтобы использовались образы большего размера из-за их веса и времени загрузки.
-
Анализ работы браузера: Ваши наблюдения показывают, что несмотря на правильное указание уменьшенного изображения в атрибуте
src
, мобильные версии Chrome и Safari предпочитают использовать версии полного размера. Напротив, на десктопных версиях (Chrome и Firefox) такого не происходит, и подгружаются нужные уменьшенные картинки. -
Влияние плотности пикселей экрана (Pixel Ratio): Браузеры при выборе изображения из
srcset
учитывают не только размеры экрана, но и его плотность пикселей. Это может привести к загрузке более крупного изображения для обеспечения большей четкости. На мобильных устройствах, где плотность пикселей высокая, такое поведение является стандартной практикой.
Рекомендации по устранению проблемы
-
Контроль плотности пикселей: Убедитесь, что ваша среда для тестирования имеет плотность пикселей, равную 1. Это поможет узнать, как браузер выбирает изображение исходя из текущих параметров отображения.
-
Оптимизация атрибутов
srcset
иsizes
:- Убедитесь, что указан параметр
sizes
в теге<img>
. Он помогает браузеру определить размер изображения в зависимости от ширины вьюпорта. - Попробуйте использовать меньший размер изображения в атрибуте
src
и добавьте весь ряд размеров вsrcset
. Это может побудить браузер использовать меньшие изображения для отображения при определенных условиях.
- Убедитесь, что указан параметр
-
Оптимизация скорости загрузки страницы и CSS: Повысьте общую скорость загрузки страницы. Небольшие задержки и большая плотность пикселей могут способствовать загрузке больших изображений.
-
Альтернативные решения: Если проблема сохраняется, попробуйте использовать JavaScript для динамической загрузки нужного изображения в зависимости от устройства и плотности экрана.
Основным фактором здесь выступает не только платформа (WordPress), но и специфическое поведение мобильных браузеров. Путем оптимизации параметров изображения и анализа плотности пикселей, вы можете минимизировать неоптимальную загрузку данных и достичь более эффективного использования ресурсов в мобильных браузерах.