Делимся приемами оптимизации под Google PageSpeed
Поделитесь опытом, кто как оптимизирует сайт? Кто набирает 85 баллов на продуктовой странице или на странице категории товаров, то есть на тех, где minishop2 свои ресурсы подключает?
Комментарии: 33
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Могу поделиться своим решением на основе html-compressor.
Принцип работы прост, стили и скрипты в специальной разметке собираются в один файл и могут быть подключены, либо помещены прямо в тело страницы.
Способ не идеален, так как требует обработки страницы на стадии рендера и это конечно минус, но задержки не так велики. Пакет находится в стадии тестирования, но результаты примерно такие
я ни кого не призываю использовать этот пакет, просто делюсь способом оптимизации.
ps. кстати данный пакет подключен и тут s6200.h3.modhost.pro/6/12010.html
но там нет оптимизации картинок потому результат не 100…
Рекомендации google явно говорят о том чего не хватает и просто поставить пакет в любом случае мало…
– на bootstrape все, заинлайнить стили видимой части в head не хочется.
И мое любимое: –
То есть в остальном все ок.
не нужно инлайнить если не хочется. Но достаточно будет переместить критикал css в вверх станицы.
переместится в потоки head'а и тем самым возможен прирост скорости, но… Как минимум это не решит проблему перерисовки с 0 в результату работы JS или т.п
И да, инлайнить тем более не нужно :-)
Cache-Control: max-age=3600, must-revalidate
Vary: Accept-Encoding
В чём может быть проблема?
недостаточно просто установить пакет.
Но и в итоге ничего, нет файла сжатого. Версия Сompressor 1.0.14-beta
2. Настроенный веб сервер (gzip, кэширование статики)
4. Оптимизированные картинки (не только сжатие, но и соответствие размеров в css реальному размеру картинки)
5. Оптимизированные скрипты и стили
Лично я не заморачиваюсь с подключением скриптов и стилей inline ради циферок от Google, просто размещаю ссылки на css в шапке, а javascript в подвале — как обычно.
Мне не то чтобы 100 из 100 хочется, но хотя бы 85… а не получается из-за:
и
Ну так собери для начала все эти js в один и сожми хотя бы через MinifyX.
Установил только что решение Володи и для мобильных с 69 до 83 вырос бал. Хорошее начало дня.
Делал так:
1. Оптимизировал изображения, можно заменять на те, что предлагает гугл
2. Сжать html
3. Все css и js в один файл
Гугл предлагает еще стили размещать перед закрывающим тегом body, но тогда при загрузке страницы все грузится без стилей сначала, что выглядит убого.
Решил просто — написал сниппет, который берет css сжатый minifyx и вставляет содержимое в head. Это дало самый большой прирост баллов.
Так же на некоторых хостингах приходится в htaccess настраивать кеширование и сжатие.
Не знаю, может кому-то покажутся превьюшки с 8-ми битным цветом не лучшего качества, но Google PageSpeed одобряет вот такие:
Пробовал с помощью phpthumbon, так и не подобрал настройки, гуглу ничего не понравилось. Попробую ваш вариант.
Если кому интересно, то вот реализация для artisan под laravel gist.github.com/AgelxNash/0b6faaa7978e3456f3cbd3ef06b365da
Ранее тестировали PageSpeed для Nginx. Из проблем — это не промышленное решение. Он либо есть у хостера либо его нет. Если сервер свой, то надо ставить руками. И обычным apt-get install к сожалению обойтись не выйдет, нужно угробить часы админского времени. Из-за этого пришлось от него отказаться.
Следующим шагом был выбор провайдера. Именно он влияет на рейтинг «первого байта». И к сожалению скорость для РФ не значит скорость для Google. Оптимальным показался именно выбор провайдера на территории Европы с использованием CDN. Выбор очень широкий и качество достойное.
Ленивая загрузка изображений делалась через bLazy (есть и другие, превосходные аналоги).
Сжатие спева делалось через MinifyX. Он офигенно справляется, если все ресурсы уже скачаны и разложены по папочкам.
Позже накопился ворох плагинов на JavaScript, которые приходилось менять или обновлять. Аналогично было и с версиями Bootstrap. Пришлось переехать на NodeJS (webpack, gulp, тысячи их). Всё офигенно, но зачем тогда MODX?..
Отдельных мучений стоила минификация HTML. В некоторых случаях CDN давал не самые подходящие результаты, и Google не пропускал, предлагая сжать HTML ещё лучше, а минификаторы из официальных репозиториев могли похвастаться одной и той же \s+ регуляркой, которая съедала всё на своём пути.
Google тем временем требовал ещё и грамотно поставить теги preconnect и использовать async/defer.
Плюнули. Написали свою шарманку для склеивания скриптов и стилей в кучу. Завернули туда же минификатор. Назвали PageSpeed.
Следующим шагом был webp. Первой попыткой была конвертация картинок «на лету». Стало понятно, что этот идиотизм проживёт до первой тысячи картинок или посетителей, и память превратится в склероз.
Второй — попытка делать отконвертированные копии при загрузке или по cron-у. Ждать час или каждую минуту сканировать кучу каталогов.
Третьей — очередной модуль для Nginx.
В итоге — конвертация с сохранением во временный кэш, лежащий рядом с движком. Расход места возрастает примерно на половину веса картинок, но зато конвертация идёт «по требованию». Если какую-то картинку вдруг вздумалось поменять — кэш улетает по кнопке и конвертация сама пройдёт заново.
Огромный минус этой фичи — зачем людям сохранять картинку с котиком на свой телефон в формате webp? А ведь получив ссылку на такую картинку выбора у человека уже нет — его браузер сказал, что он поддерживает webp.
Есть что-то более новое, может, для целей удаления неиспользуемых стилей (для сокращения css)?
(Для оптимизации старых сайтов)