3

通常どおりビューとコントローラーを使用する MVC3 アプリケーションがあります。

TestControllerまた、IIS 7.5 の仮想ディレクトリ セットアップからビューを返すコントローラーもあります。

Testビューの下のIIS内に、cshtmlページを含むローカルディスク上のディレクトリを指す仮想ディレクトリを追加しました。

最初のリクエストではビューのレンダリングに最大 20 分かかりますが、その後のリクエストには数秒かかります。

私のローカル マシンの実際のフォルダーには、何千もの cshtml ページが含まれています。これは問題になりますか?

アプリケーションが仮想ディレクトリからビューをレンダリングするのに 20 分 (最初の要求) かかり、ソリューション自体でビューをレンダリングするのに数秒かかるのはなぜですか?

どんな助けでも大歓迎です。

[追加更新] - これは何度も発生し、その後発生しなくなりました。次に、仮想ディレクトリを削除して IIS に再度追加する必要がありましたが、再び発生し始めました。

ant パフォーマンス プロファイラーを実行することにしました。これが結果です(30分近く待ってやめました) Ants パフォーマンス プロファイラ

デッドロックが発生している可能性があると感じていますが、これをテストする方法がわかりません

4

1 に答える 1

1

独自の仮想パスプロバイダーを作成した後、仮想ディレクトリからファイルが要求されると、ディレクトリ内のすべてのファイルを繰り返し処理し、すべてのファイルでGetCacheDependencyを呼び出すことがわかりました。

上記のPranavの説明は正しいと思います。したがって、答えは正しいと思いますが、以下は私が採用したアプローチです。

  1. ファイルをディスクからcouchbaseに移動しました
  2. 独自のカスタムVirtualPathProviderを作成する
  3. 独自のカスタムCacheDependencyを作成します
  4. ファイルが仮想ファイルの場合はカスタムCacheDependecyを返し、それ以外の場合はデフォルトを使用します
  5. MSMQを使用してキャッシュを無効にする
于 2012-06-19T08:49:40.357 に答える