- PR -

リンク移動に時間がかかる

投稿者投稿内容
ルーキー
常連さん
会議室デビュー日: 2006/05/08
投稿数: 20
投稿日時: 2006-11-15 16:38
VB.NET(ASP.NET)でWebアプリを作成しています。
あるページから、異なるページへresponse.redirectで飛ばしているのですが、
その元のページに多くのデータを表示していると、リダイレクトされるのに
非常に時間がかかります。
データを表示していない状態であれば、即リダイレクトされます。
データを多く表示している場合でも、そこからのリダイレクトが素早く行われるようにする方法はありますでしょうか?
アドバイスをよろしくお願いします。
どせい
大ベテラン
会議室デビュー日: 2006/10/25
投稿数: 145
投稿日時: 2006-11-15 16:49
[quote]
response.redirectの仕様を理解しているかい?
そのページの処理が完了してからリダイレクトされるんだから遅いのは当たり前だろ

代替にserver.transferが使えるかどうかは知らん。調べろ。

そもそも「多くのデータを表示している」状態そのものに問題があるんじゃないか?

ごめん。確かにどっとねっとふぁん氏の言う通りだ。
偉そうな口調でウソ書いて申し訳ない。
[ メッセージ編集済み 編集者: 未記入 編集日時 2006-11-15 16:51 ]

[ メッセージ編集済み 編集者: 未記入 編集日時 2006-11-15 17:14 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-11-15 17:06
> あるページから、異なるページへresponse.redirectで飛ばしているのですが、
> その元のページに多くのデータを表示していると、リダイレクトされるのに
> 非常に時間がかかります。

Response.Redirectをどこに記述していますか?
データを表示(や取得)する前にリダイレクトするようなタイミングに変更すれば
いいような気がします。
ルーキー
常連さん
会議室デビュー日: 2006/05/08
投稿数: 20
投稿日時: 2006-11-15 17:54
ご返答ありがとうございます。
response.redirect自体はあるボタンを押したときに走るようになっています。
ちなみにそのボタンの動作はresponse.redirectしかありません。
それでもその前にページにデータを表示していたかどうかで速度がだいぶ変わってしまいます。
具体的なコードは例は・・・

Private Sub Page_Load 〜
  if ispostback = false then
    button1.Attributes("onclick")="return confirm('〜へ移動します。よろしいですか?')
  end if
End Sub
Private Sub button1_Click 〜
  response.redirect("/aiueo.aspx")
End Sub

こんな感じです。

ちなみにServer.transeferはヘルプに
「Server.Transfer はサーバーで実行されるため、ブラウザにはページ変更のレコードは残りません。したがって、ユーザーがページの再表示を行った場合、予期しない結果になる可能性があります。」
と書いてあるので、使用していません。このことは気にしなくてよくて、Server.Transferなら速度がだいぶ上がるのならば使用も検討してみますが。。。
どうなんでしょうか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-11-15 18:02
うーん、リダイレクトの問題ではないと思うので、Transferを使ったところで
一緒のような気がします。
もしかして、あまりにデータ量が多くて、ユーザがボタンをクリックしてからも
実はデータのダウンロードが続いてる、なんてことはありませんかね。
まぁ、そんな量のデータをダウンロードしているようならユーザインタフェースを
一から見直したほうがいいでしょうけど。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-11-15 18:14
引用:

ルーキーさんの書き込み (2006-11-15 17:54) より:

コード:
Private Sub Page_Load 〜
    if ispostback = false then 
        button1.Attributes("onclick")="return confirm('〜へ移動します。よろしいですか?')
    end if
End Sub
Private Sub button1_Click 〜
    response.redirect("/aiueo.aspx")
End Sub




Page_Load で、大きなデータを検索していたりして。。。

#本当に移動しかしないなら、JavaScript で飛ばしちゃってもいいかも。。。
_________________
かるあ のメモスニペット
鶴屋さん
会議室デビュー日: 2006/08/11
投稿数: 7
投稿日時: 2006-11-15 19:18
実はビューステートが多かったり?
も可能性のひとつかも(。。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-11-15 20:07
引用:

鶴屋さんさんの書き込み (2006-11-15 19:18) より:
実はビューステートが多かったり?
も可能性のひとつかも(。。


ていうかまずこれでしょう。
ビューステートが有効なデータグリッドに大量データ表示してるとかでしょう。
こうなると、ボタン押下のポストバックで大量データが送信されるので、
その処理だけで通信時間と処理時間を食います。

スキルアップ/キャリアアップ(JOB@IT)