Все потоки
Поиск
Написать публикацию
Обновить

Комментарии 6

Спасибо, очень доступно объяснил!

спасибо, старался максимально просто объяснить на банальных примерах - черепашках-ниндзя и пиццах)

Около 20 лет назад еще писал на PHP сайт (softodrom) и свою CMS для него, которая собирала страницу и кэшировала ее в memcached вместе с некоторыми метаданными, такие как параметры запроса и внутренние связи между данными.

Например, на странице мог быть блок с данными, которые обновляются по крону или через админку, страница знает какие данные на ней присутствуют и пересобирает себя если обновилось что-то из них, но не весь контент, а только эту часть. Там так же используется свой шаблонизатор, он строит что-то типа AST, кэширует его и пересобирает только ту часть, которая изменилась.

Профилировал весь движок так, чтобы он работал практически мгновенно, еще пришлось Linux + KDE установить, потому что Flamegraph красиво отображать тогда умело только что-то под KDE :)

Были планы еще переписать движок как расширение на PHP, но уже не стал.

сильный экспириенс

Next.js просто собрал общеизвестные практики, но и без него вполне можно добиться необходимого перфоманса и гибкости.

Например - включить SSR (кастомный делается не то, чтобы сложно) и выбрать одну из стратегий оптимизации:

  • кеширование запросов в апи. Можно по version, который подается в запросе на бэк, можно по max-age, можно по таймауту, можно с ручной инвалидацией. Таким образом, node.js бэк будет в основном только рендерить html без "тяжелых" асинхронных запросов в бэк, этого достаточно для средней нагрузки

  • кеширование выдаваемого html - можно в node.js сервере в памяти или быстрой базе (Redis и аналоги), можно в прокси-сервере (nginx, Cloudflare). К этому можно прикрутить те же самые инвалидации по таймауту, max-age или вручную. Получится ISR

Комбинация этих стратегий как раз и даст идеальный баланс, причем из-за гибкости (пришла кука - отдается SSR-страница About, не пришла - отдается из кеша прокси-сервера, запрос из Android или IOS - отдается SSR-страница без вызова апи-запросов, которые берутся из кеша) можно выжать максимум и эффективно защититься от DDOS.

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

Согласен, всё зависит от конкретного проекта, но мне нравится Next.js тем, что много чего идёт "из коробки" и это повышает шанс не "выстрелить себе в ногу", особенно если ты джун)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации