Я создаю приложение React, которое должно одновременно отображать несколько игроков кадров (до 25 игроков). Каждый проигрыватель отображает последовательность изображений (10–100 кадров), хранящихся в S3, со скоростью 2 кадра в секунду. Текущая реализация:
Несколько проигрывателей кадров в виде сетки
Каждый проигрыватель загружает и воспроизводит последовательности изображений из S3
Реализована стратегия предварительной загрузки для повышения производительности.
Целевая частота кадров: 2 кадра в секунду
Технические характеристики:
React (последняя версия)
Изображения, размещенные на S3
Каждый проигрыватель кадров независим
Количество игроков: до 25
Кадров на игрока: 10–100
Проблема:
При рендеринге нескольких игроков при одновременном большом количестве кадров некоторые проигрыватели кадров застревают. На вкладке «Сеть» отображаются многочисленные отмененные запросы. Текущая реализация проигрывателя кадров:
Вопросы:
Каков наилучший подход для эффективной работы с несколькими проигрывателями последовательностей изображений?
Как оптимизировать стратегию предварительной загрузки, чтобы предотвратить отмену запросов?
Есть ли лучшие альтернативы для управления несколькими одновременными интервалами?
Есть предложения для оптимизации производительности или альтернативных подходов будем очень признательны.
Прикрепленный скриншот сети. Скриншот вкладки «Сеть».
Я создаю приложение React, которое должно одновременно отображать несколько игроков кадров (до 25 игроков). Каждый проигрыватель отображает последовательность изображений (10–100 кадров), хранящихся в S3, со скоростью 2 кадра в секунду. [b]Текущая реализация:[/b][list] [*]Несколько проигрывателей кадров в виде сетки [*]Каждый проигрыватель загружает и воспроизводит последовательности изображений из S3 [*]Реализована стратегия предварительной загрузки для повышения производительности. [*]Целевая частота кадров: 2 кадра в секунду [/list] [b]Технические характеристики:[/b] [list] [*]React (последняя версия) [*]Изображения, размещенные на S3 [*]Каждый проигрыватель кадров независим [*]Количество игроков: до 25 [*]Кадров на игрока: 10–100 [/list] [b]Проблема:[/b] При рендеринге нескольких игроков при одновременном большом количестве кадров некоторые проигрыватели кадров застревают. На вкладке «Сеть» отображаются многочисленные отмененные запросы. [b]Текущая реализация проигрывателя кадров:[/b] [code]import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { formatTime } from '../utils'; export interface FrameData { id: string; frameUrl: string; createdTime: number; } interface Props { frames: Array; currentFrameIndex: number; fps: number; timeZone: string; loop?: boolean; onComplete?: () => void; width?: number | string; height?: number | string; className?: string; onFrameChange: (idx: number) => void; elaborateFrames?: boolean; preloadCount?: number; }
for (let i = startIdx; i < endIdx; i++) { const frame = frames[i]; const frameKey = frame.frameUrl;
// Skip if already loaded or currently preloading if ( frameStatusRef.current[frameKey]?.loaded || // frameStatus[frameKey]?.error || preloadingRef.current.has(frameKey) ) { continue; }
preloadingRef.current.add(frameKey);
const img = new Image(); img.src = frame.frameUrl;
export default FramePlayer; [/code] [b]Вопросы:[/b] Каков наилучший подход для эффективной работы с несколькими проигрывателями последовательностей изображений? Как оптимизировать стратегию предварительной загрузки, чтобы предотвратить отмену запросов? Есть ли лучшие альтернативы для управления несколькими одновременными интервалами? Есть предложения для оптимизации производительности или альтернативных подходов будем очень признательны. Прикрепленный скриншот сети. Скриншот вкладки «Сеть».