Кэширование (caching)
Коротко: Процесс временного хранения данных в кэше для ускорения будущего доступа.
Подробнее: Стратегии кэширования различаются тем, как долго (TTL) и как обновляется кэш — например, «инвалидация кэша» (cache invalidation) при изменении первоисточника или «stale-while-revalidate», когда устаревшие данные ещё ненадолго выдаются, пока они перезагружаются в фоне.
Подробности
Распространённые на практике стратегии кэширования:
- Инвалидация кэша (cache invalidation): при изменении первоисточника соответствующая запись кэша активно удаляется или перезаписывается — точно, но трудоёмко в реализации («в информатике есть только две сложные проблемы: инвалидация кэша и именование вещей»).
- Истечение по TTL: записи просто истекают через фиксированное время (см. TTL), независимо от того, изменились ли данные на самом деле, — просто, но неточно (либо слишком коротко, и кэш мало помогает, либо слишком долго, и пользователи видят устаревшие данные).
- Stale-while-revalidate: запись кэша с истёкшим сроком выдаётся ещё раз, пока параллельно перезагружается в фоне, — пользователи не замечают медленного запроса ценой кратковременно слегка устаревших данных.
- Теги кэша: записи помечаются ключевыми словами, так что при изменении, скажем, определённого товара все затронутые записи можно целенаправленно инвалидировать разом, не очищая весь кэш.
Next.js внутри использует сразу несколько этих стратегий (кэш роутера, кэш данных, кэш полного маршрута) — какая из них действует, зависит от конкретного маршрута и используемых опций fetch.