5

ASP.Net 2.0 で (比較的小さな) Web サイトを開発しています。また、nAnt を使用して、実行可能ファイルを配布する前にプロジェクトを簡単に微調整しています。現在の状態では、Web サイトは以下を使用して「プリコンパイル」されています。

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

IIS プールが再起動された後 (アイドル シャットダウンまたはリサイクルの後)、アプリケーションがオンラインに戻る (そして Application_start に到達する) までに最大 20 秒かかることに気付きました。

Visual Studio 内で直接デバッグしている場合 (開始に 2 秒かかります) は同じ問題を抱えていないので、aspnet_compiler が本当に良いアイデアであるかどうか疑問に思っています。

MSDN ではあまり見つかりませんでした。本番用に Web サイトをどのようにコンパイルしますか?

4

6 に答える 6

4

究極の応答性を得るには、アプリをシャットダウンしないでください。

最初の方法は、それが信じられないほど人気が​​あることを確認して、常に誰かがそれを使用していることを確認することです。

または、スケジュールされたアクティビティとして他の場所から小さなキープアライブページをフェッチして、サイトを「ホット」に保つことができます。

于 2008-09-11T12:38:21.237 に答える
4

次のことを確認してください。

  1. Web サイト プロジェクトではなく Web アプリケーション プロジェクトを使用しています。これにより、コード ビハインドのプリコンパイル済みバイナリが生成されます。
  2. web.config ファイルでデバッグ コードの生成をオフにしました。これが aspnet_compiler を使用した場合と異なる場合、コードは再コンパイルされる可能性があります。

それらを試した場合は、アセンブリに対して ngen を実行してみて、JIT 時間を節約できますか?

于 2008-09-11T11:56:57.767 に答える
2

Web サイトが更新可能としてコンパイルされている場合、仮想ディレクトリに多数の .ASPX ファイルが表示されます。これらは起動時にコンパイルする必要があります。これは、Web UI 自体を変更できるようにするためです。これは、Web サイトと Web アプリケーションの両方のデフォルトです。

于 2008-09-11T12:19:48.443 に答える
1

重要なのは、IIS アプリケーション プールがシャットダウンしないようにすることです。これは、コードが実際にホストされている場所です。「アイドル タイムアウト」(詳細設定の下) を 1440 分 (24 時間) などの非常に高い値に設定して、誰かが 1 日に 1 回サイトにアクセスする限りシャットダウンしないようにします。

新しいコードをデプロイするときはいつでも、またはトラフィックなしでこのアイドル タイムアウト期間を超えた場合は、JIT 時間が引き続き発生します。

IIS 7.x アイドル タイムアウトの構成

于 2011-04-06T21:32:26.277 に答える
1

これが web.config で設定されていることを確認してください<compilation debug=false>。私の場合、ユーザーに渡す前にすべてのメイン ページの Get 要求を発行するバッチ ファイルもあります (ページ読み込みシミュレーション)。

于 2008-09-11T12:00:11.657 に答える
0

@サイモン:

  • プロジェクトは Web アプリケーションです。その場合、Web サイトの起動が遅くなります (別のコード構成のほかに、発生率があるとは思いもしませんでした)?
  • 私はチェックし、aspnet_compilerが呼び出された後にweb.configを編集している間、デバッグ値には触れません(ただし、web.configに触れないと、ウェブサイトの起動が速くならないことを確認します。承知しました)

(そして、私は間違いなく ngen を見ます。私はそのツールを知りませんでした。)

于 2008-09-11T12:05:24.610 に答える