0

キャッシュされていないときに SQL からページを生成する ASP.NET Web ページを作成しています。それらの読み込み時間は 300 ミリ秒から 1.5 秒の間である可能性があります (データベースの応答を修正しないでください)。

私は個人的にこれらの値が長すぎると感じており、ユーザーがアクセスしているページの読み込みに少し時間がかかることをユーザーに通知できるソリューションを探していました.

可能であれば、Page_Load関数を使用できるソリューションを探していました。この場合の完璧な解決策は、ページが生成されていることを示すアニメーション GIF またはテキストをユーザーに表示することです。

余談ですが、私は主に Windows アプリケーションのプログラミングから来ています。

4

3 に答える 3

1

最初にロード中のグラフィックを出力し、次に出力バッファーをフラッシュして、これまでのコンテンツが を使用してユーザーのブラウザーに送信されるようにする必要がありますResponse.Flush()

残りのコンテンツを出力するときは、最初に送信されたページ要素を削除して読み込み中のグラフィックが消えるように、そこに JavaScript を少し入れる必要があります。

于 2009-03-06T18:01:08.063 に答える
1

ページのレンダリングを開始し、Response.Flush() を呼び出してバッファをフラッシュできます。これにより、バッファの内容がブラウザに送信されます。グラフィックがロードされたら、グラフィックをオフにする必要があります。

もう 1 つのオプションは、AJAX を使用して画像を読み込むことです。そのため、画像なしでページ全体を読み込み、別のリクエストを開始して画像を取得します。これは、部分的なページをレンダリングしようとするよりも簡単かもしれません。

ページの読み込みに 1.5 秒かかるのは悪くありませんが、これは時間と労力の価値があると確信していますか?

于 2009-03-06T18:04:51.067 に答える
1

以下は、Response オブジェクトを使用してコンテンツをブラウザーにフラッシュし、処理を続行する方法の例です。

using System;
using System.Web.UI;
using System.Threading;

public partial class _Default : Page
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        Response.Write("<h1>please wait...</h1>");
        Response.Flush();

        // simulate load time
        Thread.Sleep(2000);

        Response.Write("<h1>finished</h1>");
    }
}
于 2009-03-06T18:07:52.837 に答える