
Tối ưu hoá việc hiển thị 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 "View Document", họ mong muốn nó tải ngay lập tức. Dù là bản ghi nhớ 3 trang hay bản tóm tắt 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 khối lượng công việc quy mô doanh nghiệp, việc tối ưu hoá triển khai của bạn là chìa khóa.
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í vòng CPU. Giao diện bộ nhớ đệm tích hợp của Doconut cho phép bạn lưu trữ hình ảnh các trang đã render một cách hiệu quả.
- Disk Caching: Tuyệt vời cho cấu hình máy chủ đơn với lưu trữ NVMe nhanh. Các trang đã render được lưu vào
App_Datavà phục vụ tĩnh cho các yêu cầu tiếp theo. - Distributed Caching (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 nên có khả năng phục vụ nó mà không cần render lại. Doconut hỗ trợ các triển khai tùy chỉnh của
ICacheđể kết nối trực tiếp với Redis hoặc Memcached.
2. Tải lười & Ảo hoá
Không bao giờ gửi toàn bộ tài liệu một lúc. Doconut sử dụng phương pháp cuộn ảo hoá.
- Chỉ các trang hiển thị (cùng 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ở một PDF 100MB mất thời gian tải ban đầu gần như tương đương với một tệp 1MB.
3. Đồng thời & Đa luồng
Trong ASP.NET Core, quản lý tài nguyên là vô cùng quan trọng.
- Parallel Processing: Doconut có thể tận dụng CPU đa nhân để tiền render các trang liền kề trong khi người dùng đang đọc trang hiện tại.
- Token Management: Đó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ốiusing) để giảm lượng bộ nhớ sử dụng.
4. Tối ưu hoá theo định dạng
- PDFs: Đảm bảo "Fast Web View" (Linearization) không thực sự cần thiết cho Doconut (vì chúng tôi render trên máy chủ), nhưng các cấu trúc nội bộ được tối ưu sẽ giúp ích.
- Images: Đối với các TIFF/JPEG khổng lồ, kích hoạt tiled rendering 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 nghì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 tăng lưu lượng nào.
cung cấp trình xem tài liệu siêu nhanh với một triển khai Doconut được tối ưu.