ASP.NET Core における大規模ドキュメントレンダリングの最適化
← Back to Blog1 min read

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