4

Web サイト内を移動する際のパフォーマンスを向上Server.Transfer("default.aspx")させるために使用する方法。これを使用すると、アドレスバーの URL が変更されません。server.transfer で新しい URL を取得するにはどうすればよいですか。またはそうでない場合)どうすればパフォーマンスを 向上させることができますか。Response.Redirect("default.aspx")

4

2 に答える 2

7

との違いを理解する必要がありますResponse.Redirect("page.aspx")Server.Transfer("page.aspx")

サーバー.転送:

  • URL は変更されないため、複数のServer.Transfer ステートメントで URL が変更されない可能性があるため、ブラウザで実行されているページが不明であるため、デバッグ目的には使用できません。

  • フォーム上のすべてのコントロールからのデータを次のページに投稿し、そこから以下を使用してアクセスできます。Request.Form["myTextBox"]

  • 同じドメイン内でのみ機能し、現在のドメイン名の外部にはリダイレクトされません。

  • ブラウザからサーバーへの往復のコストがかからないため、 に比べて高速Response.Redirectです。

Response.Redirectいつ使用するか、いつ使用するかは、最善の判断で行ってくださいServer.Transfer。あるページから別のページにフォーム コントロールのデータを送信する場合にのみ、「Server.Transfer」を使用することをお勧めします。そうしないと、デバッグの悪夢が発生します。

于 2012-11-20T13:59:01.343 に答える
2

このアプローチがあまり好きかどうかはわかりませんが、使用を主張する場合は、応答がブラウザに到達してそこで処理されたら、をServer.Transfer使用してブラウザのアドレスバーのURLを変更できます。HTML5 History API新しいブラウザのみがこの機能をサポートしていることに注意してください。ただし、時間が経つにつれて、これは問題になるのをやめるはずです。

履歴の現在の状態を操作するには、ページにJavaScriptが必要です。これは次のようになります。

<script type="text/javascript">
    window.history.pushState({ path: <pageurl> }, '', <pageurl>);
</script>

プレースホルダーは、<pageurl>サーバー上で、通話で実際に処理しているページの実際のURLに設定する必要がありますServer.Transfer

これまでにネット上でhtml5履歴APIを使用する方法の例はたくさんあります(例: http: //html5demos.com/history ) 。

于 2013-02-13T11:22:34.150 に答える