ASP.NET ScriptManager コントロールは、PageRequest の初期化など、あらゆる種類のインライン JavaScript を自動的に挿入します。これを削除するか、外部の js ファイルに移動することはできますか?
また、scriptmanager は、ページで使用されていない場合でも常に __DoPostback を追加します。これを回避したり、外部ファイルに移動したりするにはどうすればよいですか?
ASP.NET ScriptManager コントロールは、PageRequest の初期化など、あらゆる種類のインライン JavaScript を自動的に挿入します。これを削除するか、外部の js ファイルに移動することはできますか?
また、scriptmanager は、ページで使用されていない場合でも常に __DoPostback を追加します。これを回避したり、外部ファイルに移動したりするにはどうすればよいですか?
まず、「__DoPostBack」は、AutoPostBack プロパティが true に設定された DropDownList などのポストバックを引き起こす可能性のあるコントロールによって挿入されます。ScriptManager は基本的に従来のポストバックをインターセプトするため、関数を挿入する理由はそれだと思います。
-- 以下は私が考えていることです... :)
さて、すべてを外部ファイルに移動することについて。簡単ではありませんが、「可能」です。問題は、ASP.NET が実行時にスクリプトを生成しているため、静的に何もできないことです。あなたが考える必要があるのは、そもそもなぜこれをやりたいのかということです。実際には、生成されたスクリプトの多くは動的であるため、キャッシュするのはかなり困難です。ただし、本当に必要な場合は、HttpHandlers と HttpModules の両方を確認する必要があります。
基本的に、(src-attribute セットなしで) すべてのスクリプト タグを抽出する必要があります。これは、HttpContext の BeginRequest イベントの HttpModule で実行できます。ここで、必要な情報をすべて抽出し、それを、代替として機能する特定の HttpHandler への参照に置き換える必要があります。しかし、違いを生むには、既存のスクリプトを何らかの形でキャッシュする必要があります。おそらく、そのために ASP.NET Cache を使用できます。注意が必要なのは、既存のキャッシュ エントリを新しいエントリと比較して、キャッシュされたバージョンを取得する (HttpHandler が既存のエントリを指す) か、新しいエントリを生成するかを判断することです。多くのスクリプトがある場合、かなりコストのかかる操作になる可能性が高くなります。さらに、クライアントがキャッシュできるかどうかを判断する必要があります。独自のもの (e-tag などが便利な場合があります)。クライアントにとって重要なことは、毎回同じ不要なスクリプトをダウンロードしないようにすることです (それが最終的な目標だと思いますか?)。
要約すると:
ところで。スクリプトの外部化はせいぜいトリッキーなので、修正できないバグを持ち込まないように注意する必要があります;)
正確な解決策ではありませんが、以前は運がなかったので、これを自分でやろうとしました...主に時間が少なすぎるためです。タスクを実行するために支払われる場合、この種の最適化は正当化できません... :(