
ASP.NET Core における大規模ドキュメントレンダリングの最適化
速度は機能
ユーザーが「View Document」をクリックしたとき、即座に 読み込まれることを期待します。3ページのメモであろうと5,000ページの法的ブリーフであろうと、待つことは許されません。Doconut は速度を念頭に設計されていますが、エンタープライズ規模のワークロードでは実装の最適化が重要です。
スマートキャッシング戦略
同じページを繰り返しレンダリングすることは CPU サイクルの無駄です。Doconut の組み込みキャッシュインターフェイスを使用すると、レンダリングされたページ画像を効率的に保存できます。
- ディスクキャッシュ: 高速 NVMe ストレージを備えたシングルサーバー構成に最適です。レンダリングされたページは
App_Dataに保存され、以降のリクエストで静的に提供されます。 - 分散キャッシュ (Redis): ロードバランスされたサーバーファームに不可欠です。サーバー A がページ5をレンダリングした場合、サーバー B は再レンダリングせずに提供できるべきです。Doconut はカスタム
ICache実装をサポートし、Redis または Memcached に直接プラグインできます。
レイジーローディングとバーチャリゼーション
ドキュメント全体を一度に送信しないでください。Doconut は 仮想化スクロール アプローチを使用します。
- 表示中のページ(および小さなバッファ)だけがサーバーから要求されます。
- ユーザーがスクロールするにつれて、新しいページがオンデマンドで取得されます。
これにより、100MB の PDF を開く際の初期ロード時間は、1MB のファイルとほぼ同じになります。
同時性とスレッド処理
ASP.NET Core では、リソース管理が重要です。
- 並列処理: Doconut はマルチコア CPU を活用し、ユーザーが現在のページを読んでいる間に隣接ページを事前にレンダリングできます。
- トークン管理: ドキュメントハンドル (
objDoc.Close()) は不要になったらすぐに閉じる(またはusingブロックを使用)ことで、メモリ使用量を抑えます。
形式別最適化
- PDF: "Fast Web View"(線形化)は Doconut では必須ではありません(サーバー側でレンダリングするため)が、内部構造を最適化すると効果があります。
- 画像: 大容量の TIFF/JPEG については、Doconut の タイルレンダリング を有効にすると、画像を分割して処理でき、OutOfMemory 例外を防止できます。
スケールアップ
数千人の同時ユーザーにサービスを提供するアプリケーションでは、Doconut は ステートレス対応 です。ストレージ (S3/Azure Blob) とキャッシュ (Redis) を抽象化することで、コンピュートインスタンスを水平にスケールアウト(Kubernetes/App Service Plan)し、あらゆるトラフィック急増に対応できます。
調整された Doconut 実装で、超高速ドキュメントビューイング を提供します。
#Performance#ASP.NET Core#Caching#Optimization#Scalability