Nextjs 15
Вышел новый мажор Next.js с, наверное, самым важным для меня изменением с момента релиза AppRouter. А именно –отменой кэширования по умолчанию
Почему это для меня так важно? Потому что это бесконечный источник багов
Есть такое выражение: "В программировании 2 самые большие проблемы – наименование переменных и инвалидация кэша"
И если это звучит, как шутка, то на самом деле это, действительно, 2 самые серьёзные проблемы.
Любой кэш – необходимое зло.
Кэш — это осознанное нарушение DRY, когда мы создаём дублирование состояния для экономии вычислительных ресурсов.
Но любое дублирование состояния — это проблема. Так как везде, где есть дублирование, есть и рассинхронизация.
Хоть на доли секунды, но между источником истины и кэшом есть время, когда они не совпадают. А это по умолчанию баг!
Представьте себе, любой кэш — это вечный источник багов с разной степенью критичности и влияния на работу приложения
Кэш – это сложно. Особенно такой кэш, который сделали в Next.js, где он ровным слоем размазан по всему приложению.
Каждый сегмент имеет свой кэш, каждый вызов fetch имеет свой кэш.
Представьте себе обычного разработчика, который начинает осваивать Next.js и просто не понимает, почему у него постоянно показывается старая страница, fetch возвращает старый результат.
После мутации вообще хрен заставишь Next.js показать новые значения. И даже, если ты явно указал, что и как инвалидировать, в какой-то момент инвалидация может не успеть пройти, и пользователь увидит старое значение, которое он только что поменял
Но, повторюсь ещё раз, кэш – необходимое зло. Мы ограничены в вычислительных мощностях, и нам нужно кэшировать, чтобы работало быстро.
Но кэш нужен не всегда! А если он нужен, то включать его требуется очень аккуратно и с полным пониманием дела.
А как до этого было с next.js? Бля, опять ничего не работает. Пойду курить и пробовать всякие магические строчки из документации.
Крайне ужасная ситуация. Ребята это тоже поняли и, наконец, исправили
Слава богу, теперь у нас next.js — это просто php)
На каждый запрос будет выполняться всё. Всё понятно и предсказуемо. А если окажется, что у тебя много пользователей, и ресурсы больно дорогие. Ну изволь сам руками добавить кэш
Кто знает, может теперь Next.js не будет вызывать такого отторжения)
Вышел новый мажор Next.js с, наверное, самым важным для меня изменением с момента релиза AppRouter. А именно –отменой кэширования по умолчанию
Почему это для меня так важно? Потому что это бесконечный источник багов
Есть такое выражение: "В программировании 2 самые большие проблемы – наименование переменных и инвалидация кэша"
И если это звучит, как шутка, то на самом деле это, действительно, 2 самые серьёзные проблемы.
Любой кэш – необходимое зло.
Кэш — это осознанное нарушение DRY, когда мы создаём дублирование состояния для экономии вычислительных ресурсов.
Но любое дублирование состояния — это проблема. Так как везде, где есть дублирование, есть и рассинхронизация.
Хоть на доли секунды, но между источником истины и кэшом есть время, когда они не совпадают. А это по умолчанию баг!
Представьте себе, любой кэш — это вечный источник багов с разной степенью критичности и влияния на работу приложения
Кэш – это сложно. Особенно такой кэш, который сделали в Next.js, где он ровным слоем размазан по всему приложению.
Каждый сегмент имеет свой кэш, каждый вызов fetch имеет свой кэш.
Представьте себе обычного разработчика, который начинает осваивать Next.js и просто не понимает, почему у него постоянно показывается старая страница, fetch возвращает старый результат.
После мутации вообще хрен заставишь Next.js показать новые значения. И даже, если ты явно указал, что и как инвалидировать, в какой-то момент инвалидация может не успеть пройти, и пользователь увидит старое значение, которое он только что поменял
Но, повторюсь ещё раз, кэш – необходимое зло. Мы ограничены в вычислительных мощностях, и нам нужно кэшировать, чтобы работало быстро.
Но кэш нужен не всегда! А если он нужен, то включать его требуется очень аккуратно и с полным пониманием дела.
А как до этого было с next.js? Бля, опять ничего не работает. Пойду курить и пробовать всякие магические строчки из документации.
Крайне ужасная ситуация. Ребята это тоже поняли и, наконец, исправили
Слава богу, теперь у нас next.js — это просто php)
На каждый запрос будет выполняться всё. Всё понятно и предсказуемо. А если окажется, что у тебя много пользователей, и ресурсы больно дорогие. Ну изволь сам руками добавить кэш
Кто знает, может теперь Next.js не будет вызывать такого отторжения)