Концепції, цінність і типові сценарії
Концепції, цінність і типові сценарії
Підготовка контенту платформи 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, віртуалізація