Domanda

Sto creando una pagina Web ASP.NET che genera pagine da SQL quando non sono memorizzate nella cache. Il loro tempo di caricamento potrebbe essere compreso tra 300 ms e 1,5 secondi (nessuna correzione, risposte del database per favore).

Personalmente trovo che questi valori siano troppo lunghi e stavo cercando una soluzione che mi permettesse di informare l'utente che la pagina che sta visitando richiederà un po 'di tempo per essere caricata.

Stavo cercando una soluzione che potesse essere tramite la funzione Page_Load, se possibile. La soluzione perfetta per me in questo caso è mostrare all'utente una GIF animata o un testo che dice che la pagina viene generata.

In una nota a margine vengo dalla programmazione principalmente di applicazioni Windows.

È stato utile?

Soluzione

Ecco un esempio di come utilizzare l'oggetto Response per scaricare il contenuto nel browser e continuare l'elaborazione:

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

Altri suggerimenti

È possibile iniziare il rendering della pagina e svuotare il buffer chiamando Response.Flush (). Che invierà il contenuto del buffer al browser. Sarà quindi necessario disattivare la grafica una volta caricata.

Un'altra opzione sarebbe quella di utilizzare AJAX per caricare le immagini, in modo da caricare l'intera pagina, senza le immagini, e quindi iniziare un'altra richiesta per ottenere le immagini. Potrebbe essere più semplice provare a eseguire il rendering di una pagina parziale.

1,5 secondi non è male per una pagina che ti carica sicuro che valga la pena dedicare tempo e fatica?

Dovrai prima generare l'output del grafico di caricamento e quindi svuotare il buffer di output in modo che il contenuto fino ad ora sia inviato al browser dell'utente utilizzando Response.Flush () .

Quando si esegue l'output del resto del contenuto, è necessario disporre di un po 'di javascript per rimuovere i primi elementi della pagina inviati in modo che l'immagine di caricamento scompaia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top