SSG, или как я повернул не тудаЯ долго считал SSG манной небесной. Ну сами посудите — большая часть рантайма уже выполнена на этапе сборки. Осталось отдать пользователю статику с небольшими "островками интерактивности".
Получается максимально возможная производительность. Всё это можно раскидать по CDN, и получится прям вах вах.
Но за всё нужно платить...Так как в моей голове прям плотно сформировалось: если можно сделать SSG, то лучше SSG,
я начал всё прям силком в рамки этого SSG затаскивать.
И тут для настоящего SSG адепта настаёт сложный момент:
— Все переменные окружения должны быть известны на этапе сборки (Теперь Docker image нельзя запустить в разном окружении. Ата-та от девопса)
— Доступ к продовой базе данных должен быть на этапе сборки (А тут уже ата-та от безопасников)
— А что делать с интернационализацией? Получается, что нужно делать сборку под все языки сразу. А как отдать пользователю нужный контент? Появляются всякие прикольные /ru в путях
— Нет возможности использовать заголовки, в том числе, куки на сервере. И это достаточно жёсткое ограничение, которое сильно связывает руки
— Большой гап между изменениями в контенте и тем, что увидят пользователи. + Автоматизация этого процесса – значительно более сложное занятие
Короче, в результате получается какое-то сражение с ветряными мельницами. И я это сражение успешно выигрывал постоянно.
Но какой ценой?
Ценой значительного повышения ментальной сложности.Вот и получается, что установку можно и нужно сформулировать наоборот.
Любой кэш – это сложно (помните 2 самые главные проблемы в программировании)
И любой кэш
нужно добавлять после. Когда без него не обойтись.Короче, это я к чему. Если вы разрабатываете новую приложуху. И у вас не будет мильёнов пользователей с релиза.
Забейте на SSG и на кэшиЕсли пишете на Next.js
const dynamic = 'force-dynamic'
И погнали
Сэкономите время себе и бизнесу.
Но не воспринимайте мои слова буквально. Если вам нужен SSG, то вам нужен SSG. Но важно понимать, что SSG – это сложно