การเพิ่มประสิทธิภาพการแสดงผลเอกสารขนาดใหญ่ใน ASP.NET Core
← Back to Blog1 min read

การเพิ่มประสิทธิภาพการแสดงผลเอกสารขนาดใหญ่ใน ASP.NET Core

ความเร็วคือคุณลักษณะ

เมื่อผู้ใช้คลิก "View Document" พวกเขาคาดหวังให้โหลด ทันที ไม่ว่าจะเป็นบันทึก 3 หน้า หรือเอกสารกฎหมายยาว 5,000 หน้า การรอคอยไม่มีทางเลือก Doconut ถูกออกแบบให้เร็ว แต่สำหรับการทำงานระดับองค์กร การปรับแต่งการทำงานของคุณเป็นสิ่งสำคัญ

1. กลยุทธ์การแคชอัจฉริยะ

การเรนเดอร์หน้าเดียวกันซ้ำหลายครั้งเป็นการเสียวงจร CPU ที่ไม่จำเป็น อินเทอร์เฟซการแคชในตัวของ Doconut อนุญาตให้คุณเก็บรูปภาพหน้าที่เรนเดอร์อย่างมีประสิทธิภาพ

  • Disk Caching: เหมาะสำหรับการตั้งค่าเซิร์ฟเวอร์เดียวที่มีการจัดเก็บ NVMe ที่เร็ว หน้าเรนเดอร์จะถูกบันทึกลง App_Data และให้บริการแบบสถิตย์ในการร้องขอครั้งต่อไป
  • Distributed Caching (Redis): จำเป็นสำหรับฟาร์มที่ทำ load‑balancing หาก Server A เรนเดอร์หน้า 5 Server B ควรสามารถให้บริการหน้านั้นได้โดยไม่ต้องเรนเดอร์ใหม่ Doconut รองรับการนำเข้า implementation ของ ICache เพื่อต่อเชื่อมโดยตรงกับ Redis หรือ Memcached

2. Lazy Loading & Virtualization

ห้ามส่งเอกสารทั้งหมดพร้อมกัน Doconut ใช้แนวทาง virtualized scrolling

  • เพียงหน้าที่มองเห็นได้ (พร้อมบัฟเฟอร์เล็กน้อย) เท่านั้นที่จะถูกร้องขอจากเซิร์ฟเวอร์
  • เมื่อผู้ใช้เลื่อนหน้าจอ หน้าต่างใหม่จะถูกดึงตามความต้องการ วิธีนี้ทำให้การเปิดไฟล์ PDF ขนาด 100 MB ใช้เวลาโหลดเริ่มต้นเทียบเท่ากับไฟล์ 1 MB

3. Concurrency & Threading

ใน ASP.NET Core การจัดการทรัพยากรเป็นสิ่งสำคัญ

  • Parallel Processing: Doconut สามารถใช้ CPU หลายคอร์เพื่อพรี‑เรนเดอร์หน้าที่อยู่ติดกันขณะผู้ใช้กำลังอ่านหน้าปัจจุบัน
  • Token Management: ปิด handle ของเอกสาร (objDoc.Close()) ทันทีเมื่อไม่ต้องการแล้ว (หรือใช้บล็อก using) เพื่อให้ขนาดหน่วยความจำต่ำลง

4. Format-Specific Optimizations

  • PDFs: ตรวจสอบให้แน่ใจว่า “Fast Web View” (Linearization) ไม่จำเป็นต่อ Doconut (เพราะเรานำเรนเดอร์บนเซิร์ฟเวอร์) แต่โครงสร้างภายในที่ได้รับการปรับแต่งจะช่วยได้
  • Images: สำหรับ TIFF/JPEG ขนาดใหญ่ การเปิดใช้ tiled rendering ของ Doconut สามารถป้องกันข้อยกเว้น OutOfMemory ได้โดยการประมวลผลภาพเป็นชิ้น ๆ

Scaling Up

สำหรับแอปพลิเคชันที่ให้บริการผู้ใช้หลายพันคนพร้อมกัน Doconut พร้อมทำงานแบบ stateless-ready การแยกที่เก็บข้อมูล (S3/Azure Blob) และแคช (Redis) ทำให้คุณสามารถขยายอินสแตนซ์คอมพิวเตอร์ในแนวนอน (Kubernetes/App Service Plan) เพื่อรับมือกับการเพิ่มขึ้นของทราฟฟิกได้ทุกระดับ

มอบ การดูเอกสารเร็วแสง ด้วยการปรับแต่ง Doconut อย่างเหมาะสม.

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