Optymalizacja renderowania dużych dokumentów w ASP.NET Core
← Back to Blog2 min read

Optymalizacja renderowania dużych dokumentów w ASP.NET Core

Szybkość to funkcja

Kiedy użytkownik kliknie „Zobacz dokument”, oczekuje, że załaduje się natychmiast. Niezależnie od tego, czy to notatka o 3 stronach, czy 5 000‑stronicowy dokument prawny, czekanie nie wchodzi w grę. Doconut jest zaprojektowany pod kątem szybkości, ale przy obciążeniach w skali przedsiębiorstwa kluczowe jest zoptymalizowanie implementacji.

1. Inteligentne strategie buforowania

Powtarzalne renderowanie tej samej strony to marnotrawstwo cykli CPU. Wbudowany interfejs buforowania Doconut umożliwia efektywne przechowywanie renderowanych obrazów stron.

  • Disk Caching: Doskonałe rozwiązanie dla konfiguracji jednoserverowych z szybkim magazynem NVMe. Renderowane strony są zapisywane w App_Data i serwowane statycznie przy kolejnych żądaniach.
  • Distributed Caching (Redis): Niezbędne w farmach z równoważeniem obciążenia. Jeśli Serwer A renderuje Stronę 5, Serwer B powinien móc ją dostarczyć bez ponownego renderowania. Doconut obsługuje własne implementacje ICache, które można podłączyć bezpośrednio do Redis lub Memcached.

2. Leniwe ładowanie i wirtualizacja

Nigdy nie wysyłaj całego dokumentu naraz. Doconut stosuje podejście wirtualizowanego przewijania.

  • Tylko widoczne strony (plus mały bufor) są żądane z serwera.
  • W miarę przewijania, nowe strony są pobierane na żądanie. To zapewnia, że otwarcie pliku PDF o rozmiarze 100 MB zajmuje mniej więcej tak samo długo jak plik 1 MB.

3. Współbieżność i wątkowość

W ASP.NET Core zarządzanie zasobami jest kluczowe.

  • Parallel Processing: Doconut może wykorzystywać procesory wielordzeniowe do wstępnego renderowania sąsiednich stron, podczas gdy użytkownik czyta bieżącą.
  • Token Management: Zamykaj uchwyty dokumentu (objDoc.Close()) od razu, gdy nie są już potrzebne (lub używaj bloków using), aby utrzymać niski ślad pamięciowy.

4. Optymalizacje specyficzne dla formatu

  • PDFs: Upewnij się, że „Fast Web View” (Linearization) nie jest ściśle wymagane dla Doconut (ponieważ renderujemy na serwerze), ale zoptymalizowane struktury wewnętrzne pomagają.
  • Images: Przy ogromnych plikach TIFF/JPEG włączenie tiled rendering w Doconut może zapobiec wyjątkowi OutOfMemory, przetwarzając obraz w fragmentach.

Skalowanie

Dla aplikacji obsługujących tysiące równocześnie działających użytkowników, Doconut jest przygotowany do pracy bezstanowej. Poprzez abstrakcję przechowywania (S3/Azure Blob) i bufora (Redis), możesz skalować swoje instancje obliczeniowe w poziomie (Kubernetes/App Service Plan), aby poradzić sobie z każdym nagłym wzrostem ruchu.

Dostarcz błyskawiczne przeglądanie dokumentów z dostosowaną implementacją Doconut.

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