Оптимизация сайта для скорости: как улучшить?

Что вы думаете о сайтах для тестирования производительности? Я только что провёл 3 теста:
GTmetrix, PageSpeed и WebpageTest. Конечно, есть некоторые различия, но и сходства тоже. Вчера я получил оценку C на GTmetrix, так что B — это крутое улучшение, хотя не совсем понятно, откуда оно взялось.

По моим данным, самое частое в результатах этих трёх тестов для моего сайта — это время загрузки JavaScript и CSS. Но ведь JS вообще не под моим контролем? На GTmetrix эти два URL помечены как неиспользуемый JS, но ведь это встроенные в Discourse файлы, не так ли?

https://forums.gonomad.me/assets/chunk.2c7ac65fdfc1f35c61b6.d41d8cd9.js
https://forums.gonomad.me/assets/vendor.47fe1949ff0285dbc995d87a6ae0d449-223fd39128ca149073c28a57e41e969bafdb0a241e1149adab6918b27e7a3265.js

А потом я увидел, что указана задержка пути в 38,8 с, что вызвало у меня интерес. Как вообще можно оптимизировать или исправить это?

PageSpeed указал примерно то же самое — блокирующие рендеринг ресурсы JS/CSS. Самые большие JS-файлы, замедляющие сайт:

https://forums.gonomad.me/assets/chunk.2c7ac65fdfc1f35c61b6.d41d8cd9.js
https://forums.gonomad.me/assets/locales/en-d255b87afa1b13a48418c34b7c45d8aa69fce223261f36c9a101fb022c7cb8e5.js

Но, опять же, думаю, это что-то встроенное в Discourse?

Наконец, прямой тест Lighthouse из консоли разработчика показал мне результат 63:

Это связано с другой темой, где у некоторых пользователей возникали проблемы с загрузкой?

Мне кажется, стоит обратить внимание на среду хостинга. :thinking:

Хотя результат, на мой взгляд, выглядит нормально.

Отчасти. Всё это заставило меня задуматься, ха-ха.

Это было моим основным предположением, но, эх, мне тоже не нравятся некоторые оценки на этих сайтах по производительности (хотя, да, возможно, это проблемы хостинга?)

Настройка CDN — это всегда отличное начало. :rocket:

Я много читал о CDN в последнее время в рамках этого пути оптимизации. Обязательно посмотрю!

Хм… это слишком много лишней сложности для столь малого результата.

Я уже несколько лет успешно веду своё сообщество, не прибегая к использованию CDN.

Высокая нагрузка? Можете рассказать о конфигурации вашего сервера?

Не должно быть высокой нагрузки. Всего несколько зарегистрированных пользователей. Сайт создан, наверное, 12 дней назад. Для некоторых пользователей в часы пик, когда сервер находится в этом регионе, кажется медленным, но для других всё в порядке. Характеристики сервера/VPS:

3 ГБ ОЗУ
2 vCPU
35 ГБ SSD
1 Гбит/с безлимитный трафик
1 x IPv4
KVM
Ubuntu 22

РЕДАКТИРОВАНИЕ: Ой, извините, не был уверен, отвечаете ли вы мне или Роберту.

Достаточно низкая, чтобы сайт оставался очень отзывчивым в любое время.

4 ГБ / 3 ядра + 2 ГБ подкачки.

CDN немного помогает, если у вас большая глобальная аудитория и/или VPS размещён на маломощном сервере. Сайты на PHP могут получить чуть больший прирост, но правильная политика кэширования даёт гораздо больше.

Характер дискуссии имеет тенденцию нивелировать такие улучшения, или, если так можно выразиться: в такой помощи нет необходимости.

У сервисов метрик много проблем, и крайне редко их можно воспринимать «как есть» в качестве советов.

Да, именно это меня немного смущает. По сути, все пункты, за которые мне снижают баллы, кажутся встроенными в Discourse (долгая загрузка JS-файлов, блокировка и т. д.) + возможно, комбинация с моей темой. Значит ли это, что сайт на Discourse никогда не будет иметь хороший балл по этим показателям, лол? Хотя я в этом сомневаюсь. Особенно когда речь идёт о форумах.

Именно так. Вы можете немного помочь, убрав некоторые (ненужные) функции, в основном через плагины, но… реальной пользы от этого нет.

Хорошая новость в том, что это вообще не имеет значения. И более серьёзными «узкими местами» являются интернет-соединение ваших пользователей и их устройства.

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

Пусть команда и разработчики плагинов/тем делают свою работу. Этого достаточно.

Если бы у вас была «настоящая» веб-платформа вроде WordPress, Drupal и т. д., существовало бы множество других трюков. Сейчас решение принципиально иное.

И конечно — я всего лишь домашний администратор/веб-мастер, и меня поправят, если я не прав. Но я не ошибаюсь :rofl:

Окей, да, я только что провёл те же тесты на стандартной новой теме без каких-либо компонентов и получил:

Кажется, время блокировки всегда является главной проблемой (по крайней мере, для меня, когда я запускаю эти тесты). Так что, я полагаю, разработчикам Discourse нужно оптимизировать это лучше, или? Честно спрашиваю, не пытаясь критиковать.

Это не то, что видит человек. Ещё раз: Discourse — это веб-приложение, которое сначала перемещает необходимые файлы, а после этого всё (почти) представляет собой просто JSON-текст. Этот тест каким-то образом работает, когда сайт генерирует страницы на уровне сервера и отправляет клиенту читаемый HTML. Как это делает, например, WordPress.

И это время отнюдь не плохое.

То, что вы сейчас предлагаете, подразумевает, что Discourse должно быть полноценным приложением и не должно быть доступно через браузеры, например.