11 messaggi dal 10 luglio 2001
Salve a tutti,

ho un sito che usa intensivamente codice asp per accedere ad un db su sql server per prelevare informazioni di vario genere (tipo: articoli, prodotti ordinati, campi da visualizzare, insomma un bel po' di informazioni sul db).

Le pagine asp (e sono molte) accedono tutte al db, aprono una connessione e poi vari recordset.

E' possibile quindi ridurre al minimo almeno le connessioni al database, aprendone una all'inizio fintanto che l'utente resta connesso, ma dove la salvo, e chiudendola alla fine?

Esiste un metodo di programmazione per ottimizzare queste cose?

Grazie in anticipo,
Michele
2.907 messaggi dal 15 maggio 2001
Contributi
Sicuramente molte connessioni al database rallentano significativamente il browser,tuttavia non esiste un modo per tenere aperta una connessione,poichè capisci bene che la connessione al file sorgente da parte del server avviene grazie a del codice,ecco allora che se io apro una altra pagina senza connessione il server stesso si trova a processare altro codice e la precedente conn viene in automatico interrotta.


Esistono però dei trucchetti da seguire per ottimizzare il carico sul server:

1. A livello application usare il file global.asa

2.Rimuovere i commenti HTML che rallentano un casino

3.Inserire pochi comandi Response.write

4. Evitare le variabili pubbliche e di ridimensionare array

5. Evitare di usare spesso le serverVariables

6.Non abusa dell'oggetto Session

Poi la cosa fondamentale è quella di provare di persona,le cose che rallentano di + il browser

Credo di essere stato abbastanza chiaro..

Rome Webmaster


101 messaggi dal 05 luglio 2001
Di regola le connessioni ai database nelle applicazioni web vanno aperte il più tardi possibile e chiuse al più presto. Questo per rendere le applicazioni scalabili.
Immagina cosa succederebbe se al sito accedono contemporaneamente milioni di utenti e per ciascun utente venisse aperta una connessione per tutto il tempo che l'utente rimane connesso (ovvero al termine della sessione perchè non è possibile stabilire quando l'utente se ne va dal nostro sito).
OLEDB provider per SQL Server ha una caratteristica molto importante chiamata "connection pooling".
In pratica quando un'applicazione fa uso frequente di connessioni al database cioè apre e chiude connessioni di frequente la connessione non viene chiusa del tutto ma rimane in uno stato detto "pooled" per un certo periodo di tempo.
In questo modo la successiva attivazione delle connessioni è molto più rapida.
Tutto questo si traduce in un notevole aumento della scalabilità dell'applicazione.

Un buon articolo in inglese relativo all'argomento:
http://microsoft.com/mind/0599/basics/basics0599.htm

Ciao
1.818 messaggi dal 21 giugno 2001
Contributi
Nel caso che la maggior parte degli accessi al db siano di sola lettura, allora ti converrebbe aprire all'inizio il db, creare un recordset lato client disconnesso e richiudere il db. In questo modo su ogni client esisterà un'immagine statica del db (statica xché nel caso di aggiornamenti al db durante quella sessione, l'utente non potrà accedere a questi nuovi record a meno che non riapra nuovamente il collegamento al db per aggiornare il recordset).

Se ad esempio devi fare un accesso alla tabella articoli (che si presume sia di sola lettura per l'utente) un discorso del genere può funzionare. In questo modo il carico di lavoro è ripartito anche sul client.


Cia Cia
hyppos

www.teatrolabaracca.com

|-----------------------------------------|
| in giro torte solo ciclos et rotor igni |
|-----------------------------------------|

Modificato - hyppos - 18 Lug 2001 09:23:37

hyppos
<code> in giro torte sol ciclos et rotor igni</code>
101 messaggi dal 05 luglio 2001
Se i dati a cui devi accedere non cambiano di frequente e non devi effettuare ricerche intensive (cioè che hanno bisogno di indici) puoi cachare i dati sul server utlizzando XML.
In pratica puoi creare a livello application cioè nel global.asa un oggetto MSXML2.FreeThreadedDOMDocument e popolarlo con i dati che ti interessano. A questo punto utilizzando XSLT sarà possibile visualizzare tali dati in tutte le pagine senza richiedere l'accesso al database.
XSLT permette anche di filtrare i dati, ordinarli e presentarli con diversi aspetti (per esempio in tabelle in alcune pagine o in drop-down list in altre etc...).
Ovviamente è necessario implementare un sistema per aggiornare i dati a scadenze predefinite e questa forse è la parte più complessa specialmente se si ragiona in termini di server farm e di applicazioni distribuite su più server.

Un ottimo articolo in inglese sull'argomento:
http://msdn.microsoft.com/msdnmag/issues/0300/XML/XML.asp

ASP.NET offre notevoli miglioramenti relativemante al caching delle pagine create dinamicamente. Il sistema di cache di ASP.NET si basa proprio su XML.

Ciao
137 messaggi dal 06 settembre 2002
Io suggerisco:
- ottimizzare le select: spesso, soprattutto all'inizio quando si devono estrarre dati da più tabelle si fa una select per ogni tabella, poi si scopre, con l'esperienza, che magari per estrarre i dati da 10 tabelle bastava fare una query! Non scherzo!
- aprire la connessione il più tardi possibile e chiuderla il più presto possibile

Davide Pongan

Davide Pongan
www.pongan.com

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.