
Optimización de la renderización de documentos grandes en ASP.NET Core
La velocidad es una característica
Cuando un usuario hace clic en "View Document", espera que se cargue instantáneamente. Ya sea un memorando de 3 páginas o un informe legal de 5,000 páginas, la espera no es una opción. Doconut está diseñado para la velocidad, pero para cargas de trabajo a escala empresarial, optimizar su implementación es clave.
1. Estrategias inteligentes de caché
Renderizar repetidamente la misma página es un desperdicio de ciclos de CPU. La interfaz de caché integrada de Doconut le permite almacenar de forma eficiente las imágenes de las páginas renderizadas.
- Caché en disco: Ideal para configuraciones de un solo servidor con almacenamiento NVMe rápido. Las páginas renderizadas se guardan en
App_Datay se sirven estáticamente en solicitudes posteriores. - Caché distribuida (Redis): Esencial para granjas balanceadas. Si el Servidor A renderiza la página 5, el Servidor B debería poder servirla sin volver a renderizar. Doconut soporta implementaciones personalizadas de
ICachepara conectarse directamente a Redis o Memcached.
2. Carga diferida y virtualización
Nunca envíe todo el documento de una sola vez. Doconut utiliza un enfoque de desplazamiento virtualizado.
- Solo se solicitan del servidor las páginas visibles (más un pequeño búfer).
- A medida que el usuario se desplaza, se obtienen nuevas páginas bajo demanda.
Esto garantiza que abrir un PDF de 100 MB tome aproximadamente el mismo tiempo de carga inicial que un archivo de 1 MB.
3. Concurrencia y subprocesamiento
En ASP.NET Core, la gestión de recursos es fundamental.
- Procesamiento paralelo: Doconut puede utilizar CPUs de múltiples núcleos para prerenderizar páginas adyacentes mientras el usuario lee la página actual.
- Gestión de tokens: Cierre los manejadores de documentos (
objDoc.Close()) inmediatamente cuando ya no se necesiten (o use bloquesusing) para mantener bajo el consumo de memoria.
4. Optimización específica por formato
- PDFs: Asegúrese de que "Fast Web View" (Linealización) no sea estrictamente necesario para Doconut (ya que renderizamos en el servidor), pero las estructuras internas optimizadas ayudan.
- Imágenes: Para TIFF/JPEG enormes, habilitar el renderizado en mosaico de Doconut puede evitar excepciones OutOfMemory al procesar la imagen en fragmentos.
Escalado
Para aplicaciones que sirven a miles de usuarios concurrentes, Doconut está listo para ser sin estado. Al abstraer el almacenamiento (S3/Azure Blob) y la caché (Redis), puede escalar sus instancias de cómputo horizontalmente (Kubernetes/App Service Plan) para manejar cualquier pico de tráfico.
Entregue visualización de documentos ultrarrápida con una implementación de Doconut ajustada.