2009-03-06 19 views
0

Ich mache eine ASP.NET-Webseite, die Seiten aus SQL generiert, wenn sie nicht zwischengespeichert werden. Ihre Ladezeit könnte zwischen 300ms und 1,5 Sekunden liegen (Bitte keine Datenbank-Antworten reparieren).Page loading picture

Ich persönlich finde diese Werte zu lang und war auf der Suche nach einer Lösung, mit der ich den Benutzer informieren kann, dass die Seite, die er besucht, ein wenig Zeit zum Laden benötigt.

Ich suchte nach einer Lösung, die über die Page_Load-Funktion möglich sein könnte, wenn das möglich ist. Die perfekte Lösung für mich in diesem Fall ist es, dem Benutzer entweder ein animiertes GIF oder einen Text zu zeigen, der sagt, dass die Seite generiert wird.

Nebenbei komme ich aus der Programmierung meist Windows-Anwendungen.

Antwort

1

Hier ist ein Beispiel dafür, wie das Response-Objekt zu verwenden, um Inhalte an den Browser zu spülen und die Verarbeitung fortzusetzen:

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>"); 
    } 
} 
1

Sie möchten zuerst die Ladegrafik ausgeben und dann den Ausgabepuffer leeren, sodass der Inhalt so weit an den Browser des Benutzers gesendet wird, indem Response.Flush() verwendet wird.

Wenn Sie den Rest des Inhalts ausgeben, müssen Sie ein wenig Javascript darin haben, um die ersten gesendeten Seitenelemente zu entfernen, damit die ladende Grafik weggeht.

1

Sie können mit dem Rendern der Seite beginnen und den Puffer leeren, der Response.Flush() aufruft. Das wird den Inhalt des Puffers an den Browser senden. Sie müssen dann die Grafik ausschalten, sobald sie geladen ist.

Eine andere Option wäre, AJAX zu verwenden, um die Bilder zu laden, so dass Sie die gesamte Seite laden, ohne die Bilder, und dann eine andere Anfrage, um die Bilder zu erhalten. Dies könnte einfacher sein als der Versuch, eine teilweise Seite zu rendern.

1,5 Sekunden ist nicht schlecht für eine Seite laden Sie sicher, dass dies Ihre Zeit und Mühe wert ist?