SQLアプリケーションは、xmlとして返されたデータをSQL Serverに照会し、xsltを使用して最終出力を作成します。 システムを高速化する方法として、返されたsql xmlからすべての静的情報を削除し、すべての静的情報を含む大きなXDocumentをキャッシュしました。 xsl変換を実行する直前に、SQL Serverから来たxmlの最後に静的情報を付加したXDocumentを追加します。静的なXDocumentは約50Megで、SQL Serverからビルドするのに数秒かかる。asp.net Webサイトのラージオブジェクトのキャッシュ
私たちの問題は、いったんこれらの大きなXDocのいくつかをキャッシュし始めたら、私たちはキャッシュのプライベートバイトの制限サイズに達し、キャッシュがクリアされたということです。これらのXドキュメントを再構築することは、人々がレポートを実行している間には時間がかかります。これらのXDocsを物理的なファイルに保存しようとは試みていませんでした。なぜなら、これらのXDocsは、毎日発生するすべてのレポートの実行に必要であるからです。
私はAppFabric Cacheをインストールすることを考えましたが、5〜10個の大きなアイテムをそこに保存するのは良い考えではありません。
アイデア? Webサーバーにさらに多くのメモリーをインストールすると、自動的にasp.netがより大きなキャッシュを使用できるようになりますか?私はキャッシュに格納する前にデータを圧縮しようとしましたが(5倍に縮小)、XDocumentを解凍してサーバの速度を落としました。
データベースでシンプルなカスタムキャッシュを使用したり、ディスク上にファイルとして保存したり(よりよい)、このファイルをハンドラを使用してユーザーからダウンロードしてください。 – Aristos
@Aristosユーザーは静的データをダウンロードしません。これはSQL Serverからのxmlと結合され、xsltを介して処理されてレポート出力が作成されます。私はディスクにデータを保存することができますが、その後、すべてのレポートに対してXDocument.Load()を使用してデータをロードする必要があります。より速い方法がなければならないと思った。 – Wavel
ディスクに、http://code.google.com/p/protobuf-net/ – Aristos