ADO Connection objecten cachen?
In Session variabelen
Slaat u ook uw ADO Connection objecten op in Session variabelen?
Niet alleen treden er dan threading problemen op, ook is het een enorme aanslag op de server-bronnen. Wanneer u een Connection object in een Session-variabele opslaat, bedenk dan dat het Connection object door slechts 1 bezoeker kan worden gebruikt en deze minstens 20 minuten blijft bestaan, ook als de gebruiker er van al lang weg is.
Hiermee zijn de voordelen van connection-pooling, waarbij Connection objecten automatisch gedeeld worden door gebruikers, volledig van de baan.
In Application variabelen
Een Connection object kan door 1 bezoeker tegelijk worden gebruikt. Dat betekend dat alle bezoekers aan de site moeten wachten todat het Connection object dat u heeft opgeslagen in een Application variabele niet in gebruik is.
Het op deze manier cachen van een Connection object werkt daardoor prettig snel bij 1 bezoeker. De performance bij veel gelijktijdige bezoekers laadt zich raden.
Wanneer u de Connection objecten op iedere pagina maakt en weer vrijgeeft kan voor iedere bezoeker een Connection object worden gemaakt. Dat steeds maken en vernietigen van de objecten is natuurlijk kostbaar maar door het gebruik van Connection pooling op de server simpelweg de beste keus.
Ons advies
Ons advies en verzoek: sla in geen geval Connection objecten op in Session variabelen maar maak ze op iedere pagina en geef ze op iedere pagina expliciet ook weer vrij (aan de pool).
Wij raden u tevens af om Connection objecten in Application variabelen te plaatsen.
Meer over dit onderwerp
http://www.microsoft.com/mind/1198/ado/ado.htm
http://support.microsoft.com/support/kb/articles/q176/0/56.asp
|