Ottimizzare il Rendering di Grandi Documenti in ASP.NET Core
← Back to Blog2 min read

Ottimizzare il Rendering di Grandi Documenti in ASP.NET Core

La velocità è una caratteristica

Quando un utente clicca su "View Document", si aspetta che si carichi istantaneamente. Che si tratti di un memo di 3 pagine o di un lungo atto legale di 5.000 pagine, l'attesa non è un'opzione. Doconut è progettato per la velocità, ma per carichi di lavoro su scala aziendale, ottimizzare la tua implementazione è fondamentale.

1. Strategie di Caching intelligenti

Ripetere il rendering della stessa pagina è uno spreco di cicli CPU. L'interfaccia di caching integrata di Doconut ti consente di memorizzare le immagini delle pagine renderizzate in modo efficiente.

  • Disk Caching: Ideale per configurazioni a server singolo con storage NVMe veloce. Le pagine renderizzate vengono salvate in App_Data e servite staticamente nelle richieste successive.
  • Distributed Caching (Redis): Essenziale per ambienti bilanciati. Se il Server A renderizza la Pagina 5, il Server B dovrebbe poterla servire senza doverla renderizzare di nuovo. Doconut supporta implementazioni personalizzate di ICache per collegarsi direttamente a Redis o Memcached.

2. Caricamento differito e virtualizzazione

Non inviare mai l'intero documento in una volta sola. Doconut utilizza un approccio di scorrimento virtualizzato.

  • Vengono richieste dal server solo le pagine visibili (più un piccolo buffer).
  • Man mano che l'utente scorre, nuove pagine vengono recuperate su richiesta. Questo garantisce che l'apertura di un PDF da 100 MB richieda approssimativamente lo stesso tempo di caricamento iniziale di un file da 1 MB.

3. Concorrenza e threading

In ASP.NET Core, la gestione delle risorse è cruciale.

  • Elaborazione parallela: Doconut può sfruttare CPU multi-core per pre‑renderizzare pagine adiacenti mentre l'utente legge quella corrente.
  • Gestione dei token: Chiudi i gestori di documento (objDoc.Close()) immediatamente quando non sono più necessari (oppure usa i blocchi using) per mantenere basso il consumo di memoria.

4. Ottimizzazioni specifiche per formato

  • PDF: Verifica che la “Fast Web View” (Linearizzazione) non sia strettamente necessaria per Doconut (poiché il rendering avviene sul server), ma strutture interne ottimizzate aiutano.
  • Immagini: Per grandi TIFF/JPEG, abilitare il rendering a tasselli di Doconut può prevenire eccezioni OutOfMemory elaborando l'immagine a blocchi.

Scaling Up

Per applicazioni che servono migliaia di utenti contemporanei, Doconut è pronto per essere stateless. Astraendo lo storage (S3/Azure Blob) e la cache (Redis), puoi scalare orizzontalmente le istanze di calcolo (Kubernetes/App Service Plan) per gestire qualsiasi picco di traffico.

Offri visualizzazione di documenti fulminea con un'implementazione Doconut ottimizzata.

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