165 messaggi dal 10 aprile 2001
Buongiorno.
Ho notato che un Sito Web che ho fatto in .Net è particolarmente lento sull'apertura di una pagina (quella più carica di informazioni), ed al di là della revisione riguardo l'accesso ai dati che mi sono ripromesso di fare, ho notato che ogni volta che creavo una nuova pagina aspx, Visual Studio proponeva la Defaultx.aspx. Inoltre vedo che ci sono tanti altri formati...
Al ché mi sono chiesto: <<non è che per caso, creare una "Default".aspx (che poi ovviamente nomino in altro modo) per ogni pagina, sia un approccio errato?>>
Il soto di cui parlo è composto da una ventina di pagine aspx (comprese le finestre popup); da due menu.ascx; e da due Default.aspx (la seconda è fatta da due altre pagine conenute nella parte destra della prima) e da due relative MasterPage.master
...è secondo voi la strada giusta o no?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Visual Studio proponeva la Defaultx.aspx

Sì ma hai la facoltà di cambiare il nome della pagina all'atto della creazione. Questo ti eviterà di doverla rinominare.

Comunque, sia che la rinomini che la crei col nome corretto non fa differenza.


un Sito Web che ho fatto in .Net è particolarmente lento sull'apertura di una pagina (quella più carica di informazioni)

Controlla in primo luogo quali query stai inviando al database. E' possibile che tu stia inviando query che non fanno uso di indici o formate da molte join, oppure stai incappando nel problema noto come Select n+1.
Potrebbe anche essere che stai ottenendo dal database molti più dati di quanti la pagina non ne vada a visualizzare. In questo caso dovresti integrare la tua query per paginare i risultati.

Comunque, procediamo secondo il metodo scientifico: puoi usare il Sql Profiler per capire cosa sta inviando la tua applicazione al database.

Oppure, puoi loggare ciascuna query su un file di testo indicando anche il tempo della loro esecuzione che hai misurato con la classe Stopwatch. Quando hai identificato quali sono le query più lente, eseguile in Sql Server Management Studio e guarda i piani di esecuzione. Avrai degli indizi in più sul come intervenire per renderle più efficienti.

ciao,
Moreno

Enjoy learning and just keep making
165 messaggi dal 10 aprile 2001
Grazie molte Moreno.
Il sito web di cui parlo nasce con il vecchio ASP (non .net) ed una base dati in Access: nato ed implementato tutto a mano (via NotePad) senza alcun generatore di codice o simili...girava molto bene (mai notato un minimo di lentezza o altro...anche perchè gira a livello intranet!)
Avendolo "riscritto" in asp.net, ma questa volta con Visual Studio ed i nuovi oggetti (es.: SQLDataSource, ListView, Gridview...), su base dati SQL Server express 2012 (con l'ausilio delle StoreProcedure dove le interrogazioni sono un po' meno elementari)...mi aspettavo una cannonata di velocità e prestazioni stupefacente...e invece è notevolmente più lento...da qui la mia domanda che forse l'approccio di usare, al posto di ogni pagina asp una pagina aspx, non fosse lo scenario più "normale".
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


mi aspettavo una cannonata di velocità e prestazioni stupefacente...e invece è notevolmente più lento...

Sono abbastanza sicuro che non dipenda da ASP.NET. Durante la riscrittura dev'essere cambiato qualcosa a livello di logica o di query.
Oppure, può anche darsi che nel frattempo siano aumentati i dati o il database Access sia diventato più frammentato e quindi i problemi prestazionali di accesso al database si siano fatti più evidenti.

Segui i consigli del mio post precedente, è probabile che i problemi siano nelle query o nel database (es. mancanza di indici).

ciao,
Moreno

Enjoy learning and just keep making
165 messaggi dal 10 aprile 2001
Grazie Moreno. Con SQL Server Profiler ho trovato cos'è che rallenta: ad ogni ricarico della pagina riesegue una query che tra l'altro vorrei non venisse esguita ogni volta, ma solo quando clicco sull'apposito pulsante che apre la finestra modale ove è contenuto un menù a tendina popolato dalla suddetta query...
...ed ovviamente la domanda nasce spontanea: hai un suggerimento da darmi per favore sul come non fare eseguire tale query ogni volta che viene caricata la pagina completa, ma solo quando viene lanciata la finestra modale?
Ovviamente sempre grazie per i tuoi preziosi suggerimenti.
Saluti
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, prego!


ma solo quando viene lanciata la finestra modale?

La puoi togliere dal Page_Load (o ovunque si trovi in questo momento) e spostarla nella funzione che gestisce l'evento di apertura della modale. Es. Clicchi un bottone? In quel caso la inserisci nel gestore dell'evento click del bottone.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.