Optimisation du rendu de gros documents dans ASP.NET Core
← Back to Blog3 min read

Optimisation du rendu de gros documents dans ASP.NET Core

La vitesse est une fonctionnalité

Lorsqu'un utilisateur clique sur « View Document », il s'attend à ce que le document se charge instantanément. Qu'il s'agisse d'un mémo de 3 pages ou d'un mémoire juridique de 5 000 pages, l'attente n'est pas une option. Doconut est conçu pour la vitesse, mais pour des charges de travail à l'échelle de l'entreprise, optimiser votre implémentation est essentiel.

1. Stratégies de mise en cache intelligentes

Rendre à plusieurs reprises la même page est un gaspillage de cycles CPU. L'interface de mise en cache intégrée de Doconut vous permet de stocker efficacement les images de pages rendues.

  • Mise en cache sur disque : Idéal pour les configurations à serveur unique avec un stockage NVMe rapide. Les pages rendues sont enregistrées dans App_Data et servies statiquement lors des requêtes suivantes.
  • Mise en cache distribuée (Redis) : Essentiel pour les fermes équilibrées en charge. Si le serveur A rend la page 5, le serveur B doit pouvoir la servir sans la re‑rendre. Doconut prend en charge les implémentations personnalisées de ICache pour se connecter directement à Redis ou Memcached.

2. Chargement paresseux et virtualisation

Ne jamais envoyer le document entier d'un coup. Doconut utilise une approche de défilement virtualisé.

  • Seules les pages visibles (plus un petit tampon) sont demandées au serveur.
  • Au fur et à mesure que l'utilisateur fait défiler, de nouvelles pages sont récupérées à la demande.

Cela garantit que l'ouverture d'un PDF de 100 Mo prend à peu près le même temps de chargement initial qu'un fichier de 1 Mo.

3. Concurrence et thread

Dans ASP.NET Core, la gestion des ressources est cruciale.

  • Traitement parallèle : Doconut peut exploiter les CPU multi-cœurs pour pré‑rendre les pages adjacentes pendant que l'utilisateur lit la page actuelle.
  • Gestion des jetons : Fermez les gestionnaires de document (objDoc.Close()) immédiatement lorsqu'ils ne sont plus nécessaires (ou utilisez des blocs using) pour maintenir une empreinte mémoire faible.

4. Optimisations spécifiques aux formats

  • PDF : Assurez-vous que le « Fast Web View » (linéarisation) n'est pas strictement nécessaire pour Doconut (puisque nous rendons côté serveur), mais des structures internes optimisées aident.
  • Images : Pour d'énormes TIFF/JPEG, activer le rendu en tuiles de Doconut peut éviter les exceptions OutOfMemory en traitant l'image par morceaux.

Mise à l'échelle

Pour les applications desservant des milliers d'utilisateurs simultanés, Doconut est prêt pour le sans état. En abstraisant le stockage (S3/Azure Blob) et le cache (Redis), vous pouvez mettre à l'échelle vos instances de calcul horizontalement (Kubernetes/Plan App Service) pour gérer tout pic de trafic.

Offrez une visualisation de documents ultra-rapide avec une implémentation Doconut optimisée.

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