
Оптимизация рендеринга больших документов в 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.