بهینه‌سازی رندر اسناد بزرگ در ASP.NET Core
← Back to Blog2 min read

بهینه‌سازی رندر اسناد بزرگ در ASP.NET Core

سرعت یک ویژگی است

وقتی کاربر روی «View Document» کلیک می‌کند، انتظار دارد که فوراً بارگذاری شود. چه یک یادداشت ۳ صفحه‌ای باشد چه یک خلاصه حقوقی ۵۰۰۰ صفحه‌ای، انتظار برای بارگذاری امکان‌پذیر نیست. Doconut برای سرعت طراحی شده است، اما برای بارهای کاری در مقیاس سازمانی، بهینه‌سازی پیاده‌سازی شما کلید موفقیت است.

1. استراتژی‌های هوشمند کشینگ

رندر مکرر یک صفحه یک هدررفت از سیکل‌های CPU است. رابط کش داخلی Doconut به شما امکان می‌دهد تصاویر صفحات رندر شده را به‌صورت مؤثر ذخیره کنید.

  • Disk Caching: برای تنظیمات تک‌سروری با ذخیره‌سازی سریع NVMe عالی است. صفحات رندر شده در App_Data ذخیره می‌شوند و در درخواست‌های بعدی به‌صورت ایستا سرو می‌شوند.
  • Distributed Caching (Redis): برای مزرعه‌های متعادل‌بار ضروری است. اگر سرور A صفحه 5 را رندر کند، سرور B باید بتواند بدون رندر مجدد آن را سرو کند. Doconut از پیاده‌سازی‌های سفارشی ICache برای اتصال مستقیم به Redis یا Memcached پشتیبانی می‌کند.

2. بارگذاری تنبل و مجازی‌سازی

هرگز تمام سند را به‌صورت همزمان ارسال نکنید. Doconut از رویکرد اسکرول مجازی استفاده می‌کند.

  • فقط صفحات قابل مشاهده (به‌همراه یک بافر کوچک) از سرور درخواست می‌شوند.
  • به‌محض اسکرول کاربر، صفحات جدید بر‌حسب نیاز بازیابی می‌شوند. این اطمینان می‌دهد که باز کردن یک PDF ۱۰۰ مگابایتی زمان بارگذاری اولیه تقریباً مشابهی با یک فایل ۱ مگابایتی دارد.

3. همزمانی و رشته‌ها

در ASP.NET Core مدیریت منابع حیاتی است.

  • Parallel Processing: Doconut می‌تواند از پردازنده‌های چند هسته‌ای برای پیش‌رندر صفحات مجاور در حالی که کاربر صفحه فعلی را می‌خواند، استفاده کند.
  • Token Management: هنگامی که دیگر نیازی به دستگیره‌های سند نیستند، بلافاصله آنها را بسته (objDoc.Close()) (یا از بلوک‌های using استفاده کنید) تا ردپای حافظه کم بماند.

4. بهینه‌سازی‌های مخصوص فرمت

  • PDFs: اطمینان حاصل کنید که «Fast Web View» (Linearization) برای Doconut به‌صورت حتمی ضروری نیست (چون رندر در سرور انجام می‌شود)، اما بهینه‌سازی ساختارهای داخلی کمک می‌کند.
  • Images: برای فایل‌های بزرگ TIFF/JPEG، فعال‌سازی رندر کاشی‌ای Doconut می‌تواند از بروز استثناهای OutOfMemory جلوگیری کند، زیرا تصویر را به‌صورت بخش‌های کوچک پردازش می‌کند.

گسترش مقیاس

برای برنامه‌هایی که هزاران کاربر همزمان را سرو می‌کنند، Doconut آماده برای بدون‌وضعیت است. با انتزاع ذخیره‌سازی (S3/Azure Blob) و کش (Redis)، می‌توانید نمونه‌های محاسباتی خود را به‌صورت افقی (Kubernetes/App Service Plan) مقیاس‌بندی کنید تا هر افزایش ناگهانی ترافیک را مدیریت کنید.

نمایش اسناد با سرعت رعدآسا با پیاده‌سازی بهینه Doconut ارائه دهید.

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