Оптимизация рендеринга больших документов в ASP.NET Core
← Back to Blog2 min read

Оптимизация рендеринга больших документов в ASP.NET Core

Скорость — это функция

Когда пользователь нажимает «View Document», он ожидает, что документ загрузится мгновенно. Будет это 3‑страничный меморандум или 5 000‑страничный юридический доклад, ожидание недопустимо. Doconut разработан для скорости, но для нагрузок корпоративного уровня оптимизация вашей реализации имеет решающее значение.

1. Умные стратегии кеширования

Повторный рендеринг одной и той же страницы — пустая трата ЦПУ‑циклов. Встроенный интерфейс кеширования Doconut позволяет эффективно сохранять изображения отрендеренных страниц.

  • Кеширование на диске: Отлично подходит для одиночных серверов с быстрым NVMe‑накопителем. Отрисованные страницы сохраняются в App_Data и обслуживаются статически при последующих запросах.
  • Распределённое кеширование (Redis): Необходимо для фермеров с балансировкой нагрузки. Если сервер A отрендерил страницу 5, сервер B должен иметь возможность отдать её без повторного рендеринга. Doconut поддерживает пользовательские реализации ICache, которые напрямую подключаются к Redis или Memcached.

2. Ленивый вывод и виртуализация

Никогда не отправляйте весь документ сразу. Doconut использует подход виртуализированной прокрутки.

  • Запрашиваются только видимые страницы (плюс небольшой буфер) с сервера.
  • По мере прокрутки пользователем новые страницы загружаются по требованию. Это гарантирует, что открытие PDF‑файла размером 100 МБ займет примерно столько же времени, что и файл в 1 МБ.

3. Параллелизм и многопоточность

В ASP.NET Core управление ресурсами имеет решающее значение.

  • Параллельная обработка: Doconut может использовать многоядерные процессоры для предварительного рендеринга соседних страниц, пока пользователь читает текущую.
  • Управление токенами: Закрывайте дескрипторы документов (objDoc.Close()) сразу, как только они больше не нужны (или используйте блоки using), чтобы снизить потребление памяти.

4. Специфичные для формата оптимизации

  • PDF: Убедитесь, что «Fast Web View» (линеаризация) не является обязательным для Doconut (поскольку рендеринг происходит на сервере), но оптимизированные внутренние структуры всё же полезны.
  • Изображения: Для огромных TIFF/JPEG включение мозаичной отрисовки Doconut может предотвратить исключения OutOfMemory, обрабатывая изображение частями.

Масштабирование

Для приложений, обслуживающих тысячи одновременных пользователей, Doconut stateless-ready. Абстрагируя хранилище (S3/Azure Blob) и кеш (Redis), вы можете горизонтально масштабировать вычислительные экземпляры (Kubernetes/App Service Plan), чтобы справиться с любой всплеском трафика.

Обеспечьте молниеносный просмотр документов с оптимизированной реализацией Doconut.

#Performance#ASP.NET Core#Caching#Optimization#Scalability