
Otimização da Renderização de Documentos de Grande Porte no ASP.NET Core
Velocidade é um Recurso
Quando um usuário clica em "Visualizar Documento", ele espera que carregue instantaneamente. Seja um memorando de 3 páginas ou um informe jurídico de 5.000 páginas, esperar não é uma opção. Doconut foi projetado para velocidade, mas para cargas de trabalho em escala empresarial, otimizar sua implementação é fundamental.
1. Estratégias Inteligentes de Cache
Renderizar repetidamente a mesma página é um desperdício de ciclos de CPU. A interface de cache embutida do Doconut permite armazenar imagens de páginas renderizadas de forma eficiente.
- Cache em Disco: Excelente para configurações de servidor único com armazenamento NVMe rápido. As páginas renderizadas são salvas em
App_Datae servidas estaticamente em solicitações subsequentes. - Cache Distribuído (Redis): Essencial para fazendas balanceadas por carga. Se o Servidor A renderiza a Página 5, o Servidor B deve ser capaz de servi‑la sem re‑renderizar. Doconut suporta implementações personalizadas de
ICachepara conectar diretamente ao Redis ou Memcached.
2. Carregamento Lento e Virtualização
Nunca envie o documento inteiro de uma vez. Doconut usa uma abordagem de rolagem virtualizada.
- Apenas as páginas visíveis (mais um pequeno buffer) são solicitadas ao servidor.
- À medida que o usuário rola, novas páginas são buscadas sob demanda.
Isso garante que abrir um PDF de 100 MB leve aproximadamente o mesmo tempo de carregamento inicial que um arquivo de 1 MB.
3. Concorrência e Threading
No ASP.NET Core, o gerenciamento de recursos é crucial.
- Processamento Paralelo: Doconut pode utilizar CPUs multi‑core para pré‑renderizar páginas adjacentes enquanto o usuário lê a página atual.
- Gerenciamento de Tokens: Feche os manipuladores de documento (
objDoc.Close()) imediatamente quando não forem mais necessários (ou use blocosusing) para manter a pegada de memória baixa.
4. Otimizações Específicas por Formato
- PDFs: Certifique-se de que "Fast Web View" (Linearização) não é estritamente necessário para Doconut (já que renderizamos no servidor), mas estruturas internas otimizadas ajudam.
- Imagens: Para TIFFs/JPEGs enormes, habilitar o renderização em ladrilhos do Doconut pode prevenir exceções OutOfMemory ao processar a imagem em blocos.
Escalando
Para aplicações que atendem milhares de usuários simultâneos, Doconut está pronto para ser sem estado. Ao abstrair o armazenamento (S3/Azure Blob) e o cache (Redis), você pode escalar suas instâncias de computação horizontalmente (Kubernetes/App Service Plan) para lidar com qualquer pico de tráfego.
Entregue visualização de documentos ultra‑rápida com uma implementação ajustada do Doconut.