Оптимізація відображення великих документів у 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 готовий до безстанового режиму. Абстрагуючи сховище (S3/Azure Blob) та кеш (Redis), ви можете горизонтально масштабувати обчислювальні інстанси (Kubernetes/App Service Plan), щоб впоратися з будь‑яким сплеском трафіку.

Надайте швидке переглядання документів з налаштованою реалізацією Doconut.

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