2011-02-04 67 views
5

こんにちは、さまざまなブログの「ウェブサイトのパフォーマンスのヒント」のヒントの1つに、「リダイレクトを避ける」と記載されています。私の場合は、同じページにResponse.Redirectを使用しています。私はクエリ文字列を渡し、ユーザーに適切な情報を表示しています。Response.Redirect()asp.netの代替手段は何ですか?

Response.Redirect("FinalPage.aspx?NextID=" + ID); 

私たちのビジネスロジックでは、別の情報で同じページをリロードしています。

どのように私はリダイレクトを避けるのですか?他の選択肢はありますか?ところで、私の目的はそこでいくつかのパフォーマンスを得ることです。

答えて

6

リダイレクトは、PRGパターンのRで、投稿されたリクエストを処理するための受け入れられたパターンです。だから間違いなく悪ではない。 Server.Redirect()Server.Transfer()とどちらが使用されなければならないの違いは何ですか?」:しかし、共通面接の質問があるように使用

。人々は往復を伴わなかったがウェブはそれ以来あまり変わっていないので、Transferと言っていました。当時、TransferやRedirectを使用しない限り、ビュー内の共通ロジックを再利用することはできませんでしたが、今日では特にASP NET MVCでこれを行う方法がたくさんあります。

あなたの場合、私はすべてPRGです。はリダイレクトが意味的に正しいと信じています。また、ユーザーがF5をクリックするかリフレッシュするとフォームが再提出されるのを防ぎます。

0

また、Server.Transferを実行することもできます。これは、新しい要求を受け取る必要がないため、サーバーの負荷が軽減されます。 2つを比較すると、より多くの情報はhereです。

最初のリクエストの処理を別のページに移動するのではなく、クエリ文字列を変更してページ上の何かを変更しているため、リダイレクトする必要があります。

3

は不要です。リダイレクトです。

あなたのケースは異なります。情報をページに渡していますが、これは厳密にはリダイレクトと同じではありません(つまり、移動したページ)。

0

リダイレクトに余分な往復が必要な場合など、主な「悪」と呼ばれる可能性があります。クライアントは1ページ(通常は特定のボタンがクリックされたことを指定する同じページ)を要求し、サーバーは「代わりにこのページを要求する」と応答し、ブラウザはそれに応じてサーバーが実際に次のページを提供します。

これが必要な場合もありますが、ウェブサイトのナビゲーションを制御する方がはるかに優れています。たとえば、ポストバックとリダイレクトを引き起こす「フォーム」ボタンの代わりに、ハイパーリンクのように動作するLinkBut​​tonを使用して、ブラウザが新しいページを直接要求できるようにすることができます。また、異なるASCXを表示するMultiViewを使用し、ビューフリッピングによるナビゲーションを制御することもできます(ただし、ネストされた方法で使用する場合は特にパフォーマンスに影響する可能性があることを理解してください)。

0

私はあなたが同じページにリダイレクトする、その後の代わりResponse.Redirect("FinalPage.aspx?NextID=" + ID);を行う場合は、SAME pageをリダイレクトして、代わりにQueryString

をチェックすること hidden fieldまたは viewstateをチェックする必要はないように、あなたも ViewStateまたは Hidden FieldNextIDを使用することができると思います

:D

関連する問題