Концепции, ценность и типичные сценарии клонирования — меньше кода.
Концепции, ценность и типичные сценарии клонирования — меньше кода.
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Ring Platform использует React 19 cache() для дедупликации данных в Server Components, слой абстракции базы данных (DatabaseService + адаптеры) для работы с PostgreSQL или Firestore, и Firebase Admin SDK (firebase-service-manager.ts) для кешированных чтений Firestore в режиме firebase-full.
Все примеры кода ниже ссылаются на реальные файлы кодовой базы — lib/services/firebase-service-manager.ts, lib/database/DatabaseService.ts, lib/database/adapters/FirebaseAdapter.ts. Вымышленные утилиты (session-storage кеши, кастомный RingApiClient, виртуализация) не являются частью Ring Platform.
Избегайте вызовов собственных HTTP API из Server Components — App Router Server Components могут импортировать сервисы напрямую без round-trip запроса.
cache() для дедупликации запросовReact 19 cache() дедуплицирует идентичные одновременные вызовы в пределах одного запроса. Ring Platform использует это в двух местах:
1. firebase-service-manager.ts — кешированные чтения Firestore (Admin SDK, только режим firebase-full):
2. DatabaseService — кеш сущностей для консистентности read-after-write (TTL 30 секунд):
DatabaseServiceРеальный DatabaseService маршрутизирует через BackendSelector к PostgreSQLAdapter или FirebaseAdapter. Его API запросов использует один объектный параметр:
Реальный FirebaseAdapter использует firebase-admin/firestore, а не клиентский Firebase SDK:
Ключевое отличие: Пример в предыдущей версии документации показывал клиентский getFirestore() из firebase/firestore — это неверно для серверного адаптера платформы. Реальный адаптер использует исключительно firebase-admin/firestore.
| Уровень | Область | Механизм | Расположение |
|---|---|---|---|
React cache() | На запрос | Дедупликация React 19 | firebase-service-manager.ts (Firebase) / Server Components |
| EntityCache | TTL 30 с | In-memory Map | DatabaseService.ts |
| HTTP/CDN | Уровень страницы | Next.js stale-while-revalidate | next.config.mjs заголовки |
Кеширование sessionStorage на сервере не используется. Кеширование на стороне браузера остается стандартным Web API паттернам (не является частью данной кодовой базы).
firebase-service-manager.ts предоставляет:
Для лимита пакетов Firestore в 500 элементов и требований к составным индексам см. документацию Firestore.
firebase-service-manager.ts включает опциональные метрики для разработки (контролируются FIREBASE_DEBUG_LOGS=true):
Это инструмент для разработки/отладки — не система мониторинга продакшна. Он логирует в console.log, а не во внешний сервис. Бюджет производительности в next.config.mjs не настроен.
next.config.mjsОтсутствуют swcMinify, experimental.optimizeCss и performance — это функции Next.js 12/13. Next.js 16 управляет SWC минификацией и оптимизацией CSS автоматически.
cache() для дедупликации запросов, EntityCache для 30-секундной консистентности read-after-writefirebase-admin/firestore (Admin SDK), никогда не клиентский firebase/firestoreDatabaseService: findById, query({collection, filters, orderBy, pagination}), transactionSessionStorageCache, RingApiClient, маршрутизация DB_HYBRID_MODE, next.config бюджеты производительности, фейковые KPI ("95% снижение", "17.0s", "55KB"), trackWebVitals, виртуализацияRing Platform использует React 19 cache() для дедупликации данных в Server Components, слой абстракции базы данных (DatabaseService + адаптеры) для работы с PostgreSQL или Firestore, и Firebase Admin SDK (firebase-service-manager.ts) для кешированных чтений Firestore в режиме firebase-full.
Все примеры кода ниже ссылаются на реальные файлы кодовой базы — lib/services/firebase-service-manager.ts, lib/database/DatabaseService.ts, lib/database/adapters/FirebaseAdapter.ts. Вымышленные утилиты (session-storage кеши, кастомный RingApiClient, виртуализация) не являются частью Ring Platform.
Избегайте вызовов собственных HTTP API из Server Components — App Router Server Components могут импортировать сервисы напрямую без round-trip запроса.
cache() для дедупликации запросовReact 19 cache() дедуплицирует идентичные одновременные вызовы в пределах одного запроса. Ring Platform использует это в двух местах:
1. firebase-service-manager.ts — кешированные чтения Firestore (Admin SDK, только режим firebase-full):
2. DatabaseService — кеш сущностей для консистентности read-after-write (TTL 30 секунд):
DatabaseServiceРеальный DatabaseService маршрутизирует через BackendSelector к PostgreSQLAdapter или FirebaseAdapter. Его API запросов использует один объектный параметр:
Реальный FirebaseAdapter использует firebase-admin/firestore, а не клиентский Firebase SDK:
Ключевое отличие: Пример в предыдущей версии документации показывал клиентский getFirestore() из firebase/firestore — это неверно для серверного адаптера платформы. Реальный адаптер использует исключительно firebase-admin/firestore.
| Уровень | Область | Механизм | Расположение |
|---|---|---|---|
React cache() | На запрос | Дедупликация React 19 | firebase-service-manager.ts (Firebase) / Server Components |
| EntityCache | TTL 30 с | In-memory Map | DatabaseService.ts |
| HTTP/CDN | Уровень страницы | Next.js stale-while-revalidate | next.config.mjs заголовки |
Кеширование sessionStorage на сервере не используется. Кеширование на стороне браузера остается стандартным Web API паттернам (не является частью данной кодовой базы).
firebase-service-manager.ts предоставляет:
Для лимита пакетов Firestore в 500 элементов и требований к составным индексам см. документацию Firestore.
firebase-service-manager.ts включает опциональные метрики для разработки (контролируются FIREBASE_DEBUG_LOGS=true):
Это инструмент для разработки/отладки — не система мониторинга продакшна. Он логирует в console.log, а не во внешний сервис. Бюджет производительности в next.config.mjs не настроен.
next.config.mjsОтсутствуют swcMinify, experimental.optimizeCss и performance — это функции Next.js 12/13. Next.js 16 управляет SWC минификацией и оптимизацией CSS автоматически.
cache() для дедупликации запросов, EntityCache для 30-секундной консистентности read-after-writefirebase-admin/firestore (Admin SDK), никогда не клиентский firebase/firestoreDatabaseService: findById, query({collection, filters, orderBy, pagination}), transactionSessionStorageCache, RingApiClient, маршрутизация DB_HYBRID_MODE, next.config бюджеты производительности, фейковые KPI ("95% снижение", "17.0s", "55KB"), trackWebVitals, виртуализацияRing Platform использует React 19 cache() для дедупликации данных в Server Components, слой абстракции базы данных (DatabaseService + адаптеры) для работы с PostgreSQL или Firestore, и Firebase Admin SDK (firebase-service-manager.ts) для кешированных чтений Firestore в режиме firebase-full.
Все примеры кода ниже ссылаются на реальные файлы кодовой базы — lib/services/firebase-service-manager.ts, lib/database/DatabaseService.ts, lib/database/adapters/FirebaseAdapter.ts. Вымышленные утилиты (session-storage кеши, кастомный RingApiClient, виртуализация) не являются частью Ring Platform.
Избегайте вызовов собственных HTTP API из Server Components — App Router Server Components могут импортировать сервисы напрямую без round-trip запроса.
cache() для дедупликации запросовReact 19 cache() дедуплицирует идентичные одновременные вызовы в пределах одного запроса. Ring Platform использует это в двух местах:
1. firebase-service-manager.ts — кешированные чтения Firestore (Admin SDK, только режим firebase-full):
2. DatabaseService — кеш сущностей для консистентности read-after-write (TTL 30 секунд):
DatabaseServiceРеальный DatabaseService маршрутизирует через BackendSelector к PostgreSQLAdapter или FirebaseAdapter. Его API запросов использует один объектный параметр:
Реальный FirebaseAdapter использует firebase-admin/firestore, а не клиентский Firebase SDK:
Ключевое отличие: Пример в предыдущей версии документации показывал клиентский getFirestore() из firebase/firestore — это неверно для серверного адаптера платформы. Реальный адаптер использует исключительно firebase-admin/firestore.
| Уровень | Область | Механизм | Расположение |
|---|---|---|---|
React cache() | На запрос | Дедупликация React 19 | firebase-service-manager.ts (Firebase) / Server Components |
| EntityCache | TTL 30 с | In-memory Map | DatabaseService.ts |
| HTTP/CDN | Уровень страницы | Next.js stale-while-revalidate | next.config.mjs заголовки |
Кеширование sessionStorage на сервере не используется. Кеширование на стороне браузера остается стандартным Web API паттернам (не является частью данной кодовой базы).
firebase-service-manager.ts предоставляет:
Для лимита пакетов Firestore в 500 элементов и требований к составным индексам см. документацию Firestore.
firebase-service-manager.ts включает опциональные метрики для разработки (контролируются FIREBASE_DEBUG_LOGS=true):
Это инструмент для разработки/отладки — не система мониторинга продакшна. Он логирует в console.log, а не во внешний сервис. Бюджет производительности в next.config.mjs не настроен.
next.config.mjsОтсутствуют swcMinify, experimental.optimizeCss и performance — это функции Next.js 12/13. Next.js 16 управляет SWC минификацией и оптимизацией CSS автоматически.
cache() для дедупликации запросов, EntityCache для 30-секундной консистентности read-after-writefirebase-admin/firestore (Admin SDK), никогда не клиентский firebase/firestoreDatabaseService: findById, query({collection, filters, orderBy, pagination}), transactionSessionStorageCache, RingApiClient, маршрутизация DB_HYBRID_MODE, next.config бюджеты производительности, фейковые KPI ("95% снижение", "17.0s", "55KB"), trackWebVitals, виртуализация