
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_Datai 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ówusing), 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.