14

Visual Studio 2008 で Web 配置プロジェクトを使用して、コンパイル済みで全ページが結合された Web サイトを配置しています。すべてのアセンブリとプロジェクトがリリース モードでコンパイルされていることに注意してください。

マイページはすべてリリースモードでプリコンパイルされています。したがって、再コンパイルされることはなく、実行時にロードされるだけです。その場合、ページのコンパイルが不要な場合は<compilation debug="true">、system.web の設定で何か違いはありますか?

4

3 に答える 3

26

以下の優れたリンクをチェックしてください。

基本的:

  • デバッグ サポートのオーバーヘッドが原因で、コードの実行が遅くなります。
  • スクリプトと画像はクライアント側にキャッシュされません。これは、常に変更を加えてデバッグしている場合、開発中に何かをキャッシュしたくないためです。
  • リクエストはタイムアウトしません。繰り返しになりますが、コードをデバッグしているときは、リクエストのタイムアウトを取得したくありません。

上記のいずれも望ましくありません。上記のリンクには、さらに多くの欠点があります。

于 2009-04-29T10:05:39.190 に答える
2

ドキュメントによると:

リテール バイナリではなくデバッグ バイナリをコンパイルするかどうかを指定します

ただし、System.Web をすばやく反映したところ、次のようにデバッグ フラグが (直接的または間接的に) 使用されていることがわかります。

  • ランタイム コンパイル (ASPX/ASCX/MASTER)
  • ブラウザー機能ファイルのコード生成
  • デバッグ セッション中に使用される HttpDebugHandler

その結果、サイトがプリコンパイルされている場合、パフォーマンス ヒットは発生しません。ただし、HttpApplication は DEBUG http 動詞に応答するため、セキュリティ上の問題が発生する可能性があります。

つまり、サイトがプリコンパイルされている場合でも、debug=false を設定します。

編集: debug=true は、キャッシュのパフォーマンス (Mehmet Aras の回答を参照) にヒットし、実行タイムアウトは発生しませんが、コンパイルされたページの実行速度は低下しません。

于 2009-04-29T09:54:14.523 に答える