質問

私は 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 サイトをどのようにコンパイルしますか?

役に立ちましたか?

解決

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

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

これらを試したことがある場合は、アセンブリに対して ngen を実行して、JIT 時間を節約してみてはいかがでしょうか?

他のヒント

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

1 つ目の方法は、常に誰かが使用できるように、非常に人気があることを確認することです。

あるいは、スケジュールされたアクティビティとして他の場所から小さなキープアライブ ページを取得して、サイトを「ホット」に保つために使用することもできます。

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

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

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

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

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

@サイモン:

  • プロジェクトは Web アプリケーションです。その場合、Web サイトの起動が遅くなります (コード構成が異なること以外に、この問題が発生するとは思いませんでした)。
  • 確認したところ、aspnet_compiler が呼び出された後に web.config を編集している間、デバッグ値には触れていません (ただし、web.config に手を触れないと Web サイトの起動が速くないかどうかは確認します。もちろん)

(そして、私は ngen を必ず見てみるつもりです。私はそのツールを知りませんでした。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top