Tối ưu hoá việc render tài liệu lớn trong ASP.NET Core
← Back to Blog3 min read

Tối ưu hoá việc render tài liệu lớn trong ASP.NET Core

Tốc độ là một tính năng

Khi người dùng nhấp vào “Xem Tài liệu”, họ mong muốn tài liệu tải ngay lập tức. Dù là bản ghi nhớ 3 trang hay bản cáo bạch pháp lý 5.000 trang, việc chờ đợi không phải là lựa chọn. Doconut được thiết kế để tốc độ, nhưng đối với các tải công việc quy mô doanh nghiệp, việc tối ưu triển khai là yếu tố then chốt.

1. Chiến lược bộ nhớ đệm thông minh

Việc render lại cùng một trang nhiều lần là lãng phí chu kỳ CPU. Giao diện bộ nhớ đệm tích hợp sẵn của Doconut cho phép bạn lưu trữ ảnh các trang đã render một cách hiệu quả.

  • Bộ nhớ đệm trên đĩa: Thích hợp cho môi trường một máy chủ với ổ NVMe nhanh. Các trang đã render được lưu vào App_Data và phục vụ tĩnh cho các yêu cầu tiếp theo.
  • Bộ nhớ đệm phân tán (Redis): Cần thiết cho các cụm cân bằng tải. Nếu Server A render Trang 5, Server B phải có khả năng phục vụ mà không cần render lại. Doconut hỗ trợ các triển khai ICache tùy chỉnh để kết nối trực tiếp với Redis hoặc Memcached.
// Example: Implementing a simple caching strategy
viewer.Cache = new Doconut.Cache.DiskCache(@"C:\CachePath");
// or configure Redis

2. Tải lười & Ảo hoá

Không bao giờ gửi toàn bộ tài liệu một lần. Doconut sử dụng phương pháp cuộn ảo.

  • Chỉ các trang hiển thị (cộng với một bộ đệm nhỏ) được yêu cầu từ máy chủ.
  • Khi người dùng cuộn, các trang mới được lấy theo yêu cầu.

Điều này đảm bảo việc mở PDF 100 MB mất thời gian tải ban đầu gần như bằng một tệp 1 MB.

3. Đồng thời & Đa luồng

Trong ASP.NET Core, việc quản lý tài nguyên là rất quan trọng.

  • Xử lý song song: Doconut có thể sử dụng CPU đa nhân để render trước các trang liền kề khi người dùng đang đọc trang hiện tại.
  • Quản lý mã thông báo: Đóng các handle tài liệu (objDoc.Close()) ngay khi không còn cần thiết (hoặc sử dụng khối using) để giảm kích thước bộ nhớ.

4. Tối ưu hoá theo định dạng

  • PDF: Đảm bảo “Xem nhanh trên web” (Linearization) không thực sự cần thiết cho Doconut (vì chúng ta render trên server), nhưng cấu trúc nội bộ được tối ưu sẽ giúp ích.
  • Hình ảnh: Đối với các file TIFF/JPEG khổng lồ, bật render dạng lưới của Doconut có thể ngăn chặn lỗi OutOfMemory bằng cách xử lý ảnh theo từng khối.

Mở rộng quy mô

Đối với các ứng dụng phục vụ hàng ngìn người dùng đồng thời, Doconut đã sẵn sàng không trạng thái. Bằng cách trừu tượng hoá lưu trữ (S3/Azure Blob) và bộ nhớ đệm (Redis), bạn có thể mở rộng các instance tính toán theo chiều ngang (Kubernetes/App Service Plan) để đáp ứng bất kỳ đột biến lưu lượng nào.

Cung cấp trải nghiệm xem tài liệu siêu nhanh với một triển khai Doconut đã được tinh chỉnh.

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