Всех приветствую!
Не так давно я получил по электронной почте уведомление от систем поисковых панелей о том, что мои страницы на этом сайте давно отданы пользователям и «какие действия следует предпринять». Йо-клмн…🙂
Собственно, пришлось немного поиграть со страницей и протестировать работу (попутно заполнив эту заметку). Несколько рекомендаций, помогающих снизить градус проблемы, я дам ниже (вид, на что нужно обратить внимание). Может быть, кто-то еще сталкивался с чем-то подобным…
Заранее хочу отметить, что я не занимаюсь профессиональной оптимизацией сайтов, и многое не мог учесть. Так что если вы решите что-то сделать по моим примерам ниже, сделайте заранее бэкап (а еще лучше потренируйтесь и проверьте все на тестовом домене/сайте).
Теперь, собственно… (к контрольному списку).
*
На что обратить внимание, если странички сайта долго загружаются
Оценка и диагностика (где проверить скорость загрузки)
Для простоты думаю будет разумно разделить проблему на две категории: одна связана с софтом (например, ошибки в файлах движка, избыточные запросы и т.п.), другая с железом (сервер/хостинг).
Но сначала неплохо бы оценить масштабы проблемы, и замерить скорость открытия страниц (неужели они долго грузятся?). PageSpeed (от Google) отлично подходит для такой оценки (для начала). Он также даст вам много советов и подскажет, «куда копать».
В моем случае (см ниже) все оказалось не радужно: на ПК сервис показал, что страницы открываются за 3-3,5 секунды. Это для движка WordPress без кэширования (экран справа после оптимизации).
Скриншот 1 pagespeed.web.dev — пример измерения скорости загрузки сайта
Кстати, ту же информацию можно получить и в хромобраузерах. Достаточно открыть страницу обзора кода, перейти на вкладку «Производительность» и нажать на стрелочку. См пример ниже. 👇
Скриншот 2 (кликабельно). Яндекс браузер — изучить элемент
Кроме того, было бы неплохо проверить сайт на ресурсе Ping-admin. Возможно, что из некоторых стран вообще не откроется…
Скриншот 3. Пинг админа. Страница не работала
*
По поводу хостинг-услуг и движка (на примере WordPress)
Для начала стоило бы (на мой взгляд) узнать, сколько запросов уходит в базу WordPress и как долго генерируется страница (у Юрия Рассадникова есть код, вроде работает 🙂). Дело в том, что некоторые плагины могут создавать большое количество запросов и чрезмерную нагрузку…
Помню, как одна галерея сделала мне пару сотен запросов и страница сгенерировалась за 1-3 секунды. (кстати, ваш хостинг/сервер тоже может влиять на время генерации — зависит от производительности/выделенных ресурсов).
Скриншот 4. Сколько запросов к базе данных, сколько времени занимает генерация страницы
В идеале (на мой взгляд) для обычной информационной страницы время генерации не должно превышать 0,3-0,5 секунды. (если она у вас на 2-3 секунды, то ситуацию может спасти только «жесткое» кеширование // т.е это когда специальный скрипт или плагин временно сохранит сгенерированную страницу на диск и отдаст посетителю. Расскажу пару об этих словах ниже).
📌 Если время генерации большое, то:
- можно попробовать использовать другой 📌хостинг или даже взять тестовый 📌VPS сервер;
- можно отключить некоторые плагины (или заменить их функциями), оптимизировать код для снижения нагрузки (иногда сложный вопрос, и не каждый может справиться самостоятельно. Иногда проще и быстрее переплатить за более производительный сервер);
- можно подключить к кэшированию.
*
Кстати, я бы рекомендовал добавить сайт в Яндекс Вебмастер: вы будете получать уведомления об обнаруженных проблемах на сайте. Кроме того, есть несколько полезных опций, например, для проверки времени отклика сервера. Рекомендуется, чтобы оно не превышало 200 мс. (Иначе некоторые сайты для русской аудитории находятся на другом конце планеты, и открываются раз в секунду на 5-6 секунд, что очень долго…).
Скриншот 5. Время отклика сервера — Яндекс Вебмастер
*
Затем нужно проверить версию своего движка и при необходимости обновить его (в данном случае Вордпресс «заморачивается» с напоминаниями… Хотя сам я лет 5-6 пользовался старой версией, т к она отключалась в поисках обновления… 🙂 На мой взгляд разницы в интерфейсе нет…).
Скриншот 6. Доступен WordPress 6 — обновите!
*
В настройках хоста очень желательно посмотреть:
- во-первых, какая версия PHP задействована. Как правило, версия 7.0+ дает гораздо лучшие результаты (по сравнению с той же 5.6) как по скорости, так и по памяти (чтобы использовать ее и при этом не было ошибок, предварительно желательно обновить и движки, и плагины);
- во-вторых, включено ли сжатие для статического контента (по умолчанию оно включено не везде).
Скриншот 7. Версия PHP. Сжатие включено
*
Также на скорость загрузки страницы могут влиять большие плохо сжатые изображения (хотя я очень не люблю, когда на некоторых сайтах картинки/картинки плохо и четко видны. Все-таки у многих есть скоростной интернет. На мой взгляд, это достаточно соблюдать принцип рациональности… 🙂).
Скриншот 8. Было 2,2 МБ, стало 34 КБ
📌 Что это значит:
- если ширина основного текста сайта 800 пикселей. — тогда нет смысла вставлять туда картинку с 3000 пикселей. Вы можете вставить изображение размером 800 пикселей, но по клику пользователя скачать оригинал или копию (в принципе, WordPress делает это по умолчанию, но некоторые отключают это…);
- использовать «ленивую» загрузку изображений // это когда они загружаются не сразу, а по мере отображения страницы (современные версии WordPress, начиная с 5.5*, делают это автоматически // или можно использовать плагин);
- некоторые изображения хорошо подходят для формата PNG, другие — для JPG. Например скриншоты (где много сплошных цветов, например белый) — в PNG (256 цветов) весят прилично меньше, чем JPG, а качество у них лучше. С другой стороны, если речь идет о «красочном» изображении, то здесь выигрывает JPG;
- еще лучших результатов по скорости можно добиться с современным форматом изображений Webp, который активно рекомендуют сервисы Google (есть множество плагинов для WordPress). ☝️ Сам я решил воздержаться от него по нескольким причинам: на сайте 10-15% аудитории с браузерами, не поддерживающими этот формат; Windows и некоторые программы также не поддерживают его. Хочется сразу и везде… 🙂
*
📌 Ну и не могу не заметить добавление на сайт различных кнопок (в том числе и для социальных сетей), счетчиков, окон iframe и прочего позаимствованного с других ресурсов. Проверьте количество и уменьшите, если возможно, до минимума!
Я сам просто поставил на блог счетчик от Liveinternet (привык, + достаточно быстро загружается и почти не мешает работе ресурса).
Скриншот 8.1. Живой интернет — счетчик
*
По поводу кэширования (или как спасти ситуацию, когда генерация странички идет долго)
Что такое кэширование?
Обычно, когда вы обращаетесь к серверу для просмотра страницы, он ее сначала «генерирует» (т.е собирает по кусочкам, обращаясь к базе данных), а затем «отдает» вам. Генерация страницы требует времени и ресурсов ЦП. Время летит иногда…
Однако, чтобы увеличить скорость и снизить нагрузку, вы можете сделать еще кое-что: сгенерировав популярную страницу, вы можете сохранить ее на диск. И когда другой пользователь заходит на сервер, чтобы увидеть его (не генерировать его снова, как обычно), а просто «отдать» эту копию (экономия времени может достигать 90+%!). Экономия ресурсов колоссальная, есть ли выход!? 🙂
Стоит сделать замечание: такой подход не всегда оправдан. Например, могут не работать некоторые функции сайта: подсчет просмотров страниц, рейтинг (и другие динамические вещи). Кроме того, только гости могут кэшировать страницы, а обычные посетители/комментаторы не могут. Это уже более интересный вариант… 🙂
Теперь к реализации…
*
Выбор 1
Для WordPress существует целый ряд плагинов кеширования, которые могут в разы ускорить ваш сайт: WP Super Cache, WP Rocket, W3 Total Cache, WP Fastest Cache, Breeze…
Как правило, настройка проста и осуществляется из админки блога. После установки плагина часто бывает так, что даже на относительно дешевом тарифе хостинга, сайт «оживает» и его можно смело продолжать держать на нем… (правда не забываем про резерв).
📌 Важно: тестовая страница с плагином кеширования должна быть из браузера, под которым вы ранее не посещали свой сайт! Или через спецсервисы, смотрите пару ссылок в начале статьи…
Скриншот 9. Кеширующие плагины для WordPress
Вариант 2
Можно сделать еще кое-что: установить специальный скрипт, который будет «поверх» WordPress: т.е когда придет запрос на показ определенной страницы, он проверит, есть ли она на диске (вдруг кто-то ее уже «просмотрел» раньше, и он сделал эту копию). Если это так, он вернет его как обычный файл HTML, если нет, то передаст управление движку.
Насчет скорости: 0 запросов MySQL в БД, 0,1-1 Мб памяти PHP, время загрузки страницы — доли секунды… (даже при десятках запросов). Стоит ли игра свеч?!
Скриншот 10. Буфер на моей странице
Конечно, этот способ для тех, кто хоть немного знаком с PHP, чтобы все настроить и оптимизировать.
***
На этом блоге есть бесплатная версия, которая не обновлялась 100 лет 😢 (разрешите выложить сюда версию скрипта: v2.06). В принципе, если уж совсем «запутаться» — такой сценарий можно набросать самому: всего несколько условий, что проверять и что делать, и «ву-а-ля»…
Эта версия скрипта у меня в блоге как защита от «перегрузки», но немного изменена по некоторым функциям. Установка проста: просто добавьте несколько строк кода в файл index.php в корне сайта.
Ну а платный можно найти (наверное 🙂) на любом сервисе заказа услуг по оптимизации сайта…
*
На этом пока все… Остальные рекомендации приветствуются!
Удачи!
☝️👇
https://ocomp.info/uskorit-sayt.html