Для изображений не заданы явным образом атрибуты width и height. Google Page Speed
Всем привет! Такая проблема: для изображений не заданы явным образом атрибуты width и height. Понятное дело, можно просто поставить width и height в картинках, но проблема в том, что у меня этих картинок на сайте КУЧА! Есть ли способ, как можно избавиться от этой ошибки в Google Page Speed? У меня в css проставлены необходимые width и height, может есть код js, который ко всем картинкам автоматически ставит значения из css? Заранее спасибо!
Ответы (3 шт):
Всё зависит от того как именно с сервера вы отдаете эти "очень много" картинок и как их там храните. Если они генерируються из шаблонов, то проще поправить это в шаблонах. Если же эти картинки сохранены в базе данных. Предположим у вас CMS WordPress, то самым простым (но и опасным) способом буде разпарсить ячейки с данными <img> и всем которые не содержат указаным параметров через mySQL повписывать данные атрибуты в завимости от того что надо. Хотя опять же, контентменержеры любят засовывать значения картинок не те что нужны, так что там тоже боком может вылезти.
Вы же понимаете, что от пустых атрибутов width="" height="" вас Google Page Speed не похвалит.
Ну или оплатите кому-то эту seo оптимизацию и пусть кто-то ручками это сделает, если финансы позволяют.
Если коротко, то нет. Через JS данная проблема не решаеться. Обмануть Google Page Speed не получиться.
А откуда взялись эти HTMLки с непроставленными width/height? Они все однотипные (например, 1000 товаров, и у каждого разное название, цена и фотографии)? Если так, то вам стоит посмотреть на SSG - static site generation. Мне hugo нравится, но тут на вкус и цвет (возможно, вам удобнее будут те, что с поддержкой JS). Вот он по готовому шаблону буквально за секунду делает сотни страничек и для картинок может размеры проставить. Уверен, и в других SSG подобная функция должна быть. Посмотрите тут: https://jamstack.org/generators/
Ну и это должно делать на серверной стороне, чтобы скачав HTMLку браузер сразу уже знал размеры картинки. А когда весь контент скачан (включая JS, которым вы хотите расставлять размеры) - тогда они уже и не нужны.
Если у вас битрикс и картинки хранятся стандартно для битрикса, то метод CFile::GetFileArray() возвращает в результирующем массиве поля WIDTH и HEIGHT.