Perché un sito Web ASP.Net potrebbe caricarsi lentamente? [chiuso]


9

Aneddoticamente, ho visitato molti siti Web .aspx che richiedono una notevole quantità di tempo di caricamento per ogni pagina.

La mia esperienza è unica?

In caso contrario, perché un sito Web ASP.Net potrebbe caricarsi lentamente?

Modifica: ora sono trascorsi circa 7 anni (29/12/2017). La buona notizia è che non vedo più questo problema, forse perché Google ha iniziato a penalizzare i siti che si caricano troppo lentamente. Ora uso ASP.NET MVC con buoni risultati, attualmente in esecuzione su server virtuali privati ​​Vultr (Azure è stato troppo lento quando l'abbiamo provato). Alcuni dei peggiori trasgressori che vedo ora sono i sistemi CMS come Wordpress e Drupal, probabilmente in esecuzione su hardware troppo lento o non ottimizzato per la quantità di traffico che il sito riceve. -HK1


10
Potrebbero essere molti i fattori in gioco. Il sito che stai utilizzando in questo momento è basato su .NET ed è in genere molto veloce (meno tempi di inattività / periodi di manutenzione). Gli sviluppatori di questi siti potrebbero inviare tonnellate di dati all'utente, connessioni lente, server sovraccarichi, ecc. Ecc. Ecc. Potrebbe anche essere una percezione in gioco.
wkl,

4
@birryree Dovresti aggiungere il tuo commento come risposta, dal momento che hai praticamente colpito l'unghia sulla testa lì.
Adam Lear

Ho risolto questo problema semplicemente con il code-behind, puoi controllare qui: http://stackoverflow.com/questions/27339997/how-to-always-your-warm-up-asp-net-we
VnDevil

Risposte:


22

Cinque possibilità che mi vengono in mente (a parte alcune tecniche avanzate di memorizzazione nella cache e simili):


Non puoi inserire un esempio?
JeffO

1
Anche ViewState ha un ruolo in questi problemi.
Erin

1
1) In altre parole, ASP.NET utilizza più risorse di asp classic?
HK1

1
Penso che un altro problema comune non menzionato nella tua risposta eccezionale (o in una qualsiasi delle altre risposte qui) sia l'accesso lento al database. Ho usato diverse società di web hosting "budget" (soluzioni di rete, per non parlare dei nomi) e ho avuto dei brutti rallentamenti dovuti all'accesso al database (SQL Server).
HK1

8

Come apparentemente questa potrebbe essere una risposta degna.

Potrebbero essere molti i fattori in gioco. Il sito che stai utilizzando in questo momento è basato su .NET ed è in genere molto veloce (meno tempi di inattività / periodi di manutenzione).

Gli sviluppatori di quei siti che visiterai potrebbero spingerti tonnellate di dati, connessioni lente, server sovraccarichi, ecc. Ecc. Ecc. Potrebbe anche essere una percezione in gioco. Inoltre, forse javascript insano in gioco e stai eseguendo IE? O flash?


4

Se non sai davvero cosa stai facendo, ASP.NET WebForms ti consente di creare un'applicazione web rilasciando i controlli su un modulo, arrivando persino a nascondere la natura apolide di http. Funziona, ma quel tipo di sviluppo non produrrà mai un codice efficiente, specialmente se il tuo livello di accesso ai dati implica query generate che selezionano qualsiasi cosa da un database sql express senza indici.

Esistono molti siti Web veloci su asp.net, sviluppati da persone che capiscono come funzionano davvero le applicazioni web. Ciò include questo sito: utilizza ASP.NET MVC che offre un controllo molto maggiore sulla gestione delle singole richieste e non mostra l'estensione .aspx.


3

Solo speculazioni qui come ho notato la stessa cosa. Ho il sospetto che i siti .asp tendano (notate la parola tendenzialmente ) ad essere ospitati autonomamente sui server di un'azienda, anziché ospitati nei o nei data center. Quindi vengono spesso eseguiti su hardware e connessioni non progettati per il traffico Web ad alta velocità. Sospetto che anche i siti guidati dalla fusione fredda soffrano di questo.


2

Quando viene caricato un sito Web (evento application.start), ci vuole tempo per caricare tutto in memoria. A seconda delle impostazioni di IIS, dopo circa 20-30 minuti di inattività, verrà scaricato. Non ho trovato un modo decente per mantenere l'applicazione in esecuzione costantemente senza un servizio che fa GETogni 10+ minuti.

Un backend / datalayer mal progettato può rallentare qualsiasi cosa (indipendentemente dalla velocità con cui il computer lo esegue). La profilazione ti aiuterà a identificare dove si trovano i problemi.


1

Lo stai sicuramente immaginando. :)

Molti fattori entrano in gioco con qualsiasi software. L'architettura, la ridondanza del flusso di codice, la qualità del codice, ecc. Troppi per iniziare a elencare.

Vuoi provare che ASP è buono per l'utilizzo a livello aziendale? Proprio questo sito (e tutti i siti web SE) sono realizzati utilizzando ASP.Net, in particolare MVC.

Quando è stata l'ultima volta che questo sito è stato lento? Sono qui da più di un anno e non ho mai notato una volta che le cose si affannano nonostante la sua enorme base di utenti.


0

Il viewstate può davvero rallentare i postback. Se hai una grande lista a discesa su una pagina non dovresti usare lo stato di visualizzazione su di loro.

Viewstate ti permette di far finta di lavorare su un'app con stato winforms. Questo può metterti nei guai a volte.


0

Tutto quanto sopra è probabilmente vero. Il più grande singolo fattore che ha influito sulle prestazioni nel sito ASP.NET su cui ho lavorato è stato che tutto ciò che lo riguardava era vecchio. La versione di .NET framework, i server, l'infrastruttura del database e il codice stesso stavano invecchiando male.

Sospetto che molti siti ASP.NET tendano ad essere siti aziendali. Questi non ricevono molto amore, dal momento che tendono a funzionare . Le persone non le riscrivono fino a quando non è necessario, il che è spesso molto lungo lungo la strada.

So che il sito con cui ho lavorato che utilizzava ASP.NET ha ottenuto un enorme aumento di velocità semplicemente passando alla versione più recente del framework, che aveva JITing molto più efficiente e impostazioni predefinite di cache sana.

L'altra cosa che ho visto è che molti siti ASP.NET non sanno come ridimensionare correttamente. Non hanno un corretto bilanciamento del carico perché la progettazione del loro sito per funzionare correttamente con i web garden non è comune o ben documentata nella comunità. Se non si progetta il proprio sito per i web garden sin dall'inizio, non è possibile utilizzare il meccanismo di ridimensionamento incorporato di IIS. Il bilanciamento del carico software con Bilanciamento carico di rete di Windows non è molto comune ed è complesso da gestire. (Ciò rimanda al fatto che ASP.NET tende a essere un software aziendale e tende a essere gestito dalla società che gestisce il sito piuttosto che dai professionisti IT che sanno come configurare correttamente queste cose.)

Il bilanciamento del carico hardware con F5 è molto costoso, ma sembra essere il meccanismo più comune e semplice per ridimensionare i siti ASP.NET all'interno delle reti aziendali. Penso che tra la folla dell'open source l'aspettativa sia quella di creare un bilanciamento del carico sin dall'inizio usando strumenti open source disponibili gratuitamente che si ridimensionano automaticamente in base all'utilizzo. Questo non è comune nel mondo ASP.NET da quello che ho visto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.