Vraag & Antwoord

Webprogrammeren & scripting

[ASP] Records-tabel - Hoe kan ik de snelheid verbeteren?

8 antwoorden
  • Ik heb een .asp pagina met een tabel. Deze tabel heeft een vaste titel <tr> Deze tabel heeft een variabele records <tr> D.m.v. een loop haalt de pagina alle benodigde records uit de database. Nu staan er 300 records in en het duurt ongeveer 15 sec. voordat ie de tabel met gegevens laat zien. Ik heb een kabelverbinding. Database is Access2000 Hoe kan ik dit proces optimaliseren, zodat de gegevens sneller getoond worden?
  • Voer je 300 keer een query uit of haal je een recordset op en loop je daar door heen? En wat doe je verder met deze gegevens? M.a.w. met deze summiere informatie valt er niet veel zinnigs te zeggen over de oorzaken. Wat heb je overigens zelf al geprobeerd? Op internet moet genoeg te vinden zijn over [url=http://www.google.nl/search?sourceid=navclient&hl=nl&q=asp+performance+tips]performance tips[/url] lijkt me.
  • Hij voert eerst een query uit, dan bouwt ie een recordset op en die wordt d.m.v. een loop een de table geplaatst.
  • Als je veel records hebt kun je beter niet alle records tegelijk laden in een recordset. Doormiddel van een link zou je verder kunnen bladeren door de records.
  • Een relatief onbekende methode om te werken met recordsets zijn overigens de [url=http://www.devguru.com/Technologies/ado/quickref/recordset_getrows.html]GetRows()[/url] en [url=http://www.devguru.com/Technologies/ado/quickref/recordset_getstring.html]GetString()[/url] methods van het recordset object. bijv: [code:1:6997eef45a] Set oRs = oCon.Execute("SELECT foo, bar FROM tabel") a_mItems = oRs.GetRows() oRs.Close set oRs = Nothing ' hierna kan je met een "for next" loop-en door je array met gegevens ' ipv loop-en door je recordset [/code:1:6997eef45a] Deze methods zijn sneller dan rechtstreeks werken met de recordset. Bij te veel gegevens is het inderdaad aan te raden eens te gaan kijken naar de mogelijkheid om de gegevens over meerdere pagina's te verdelen (zoek maar eens op "[url=http://www.google.nl/search?sourceid=navclient&hl=nl&q=recordset+paging]recordset paging[/url]" voor verschillende methodes waarop je dat kan aanpakken).
  • Kent iemand het flush commando? Hoe kan ik deze toepassen op een simpele query die alle records in een table plaatst: [code:1:4d9bf84f26]Set con = Server.CreateObject("ADODB.Connection") con.Open "DSN" sql = "SELECT * FROM table" set Rs = con.Execute(sql) WHILE NOT Rs.EOF %> <Table> <% WEND %>[/code:1:4d9bf84f26] Als het goed is wacht ie dan niet totdat alle rijen zijn ingeladen, maar laat ze direct zien.
  • [quote:a10ea8f598="Johant"]Kent iemand het flush commando?[/quote:a10ea8f598] [i:a10ea8f598]flush[/i:a10ea8f598] als in: [i:a10ea8f598]response.flush[/i:a10ea8f598]? Ja, die ken ik. [quote:a10ea8f598="Johant"]Hoe kan ik deze toepassen op een simpele query die alle records in een table plaatst: [/quote:a10ea8f598] bijvoorbeeld zoiets: [code:1:a10ea8f598] response.buffer = true Set con = Server.CreateObject("ADODB.Connection") con.Open "DSN" sql = "SELECT * FROM table" set Rs = con.Execute(sql) WHILE NOT Rs.EOF response.write "bla" response.write "bla" response.flush rs.movenext WEND %>[/code:1:a10ea8f598] [quote:a10ea8f598="Johant"]Als het goed is wacht ie dan niet totdat alle rijen zijn ingeladen, maar laat ze direct zien.[/quote:a10ea8f598] ja en nee, de opgebouwde buffer wordt wel doorgestuurd naar de client, maar de user agent (bijv: IE) zal de toegestroomde content ook moeten parsen en dat is bij mijn weten niet te beinvloeden. Bijvoorbeeld NS4 stond er altijd om bekend een pagina met tables pas te tonen wanneer de volledige table binnen was.
  • Inderdaad, hij flushed 'm wel, maar laat de tabel pas zien als ie volledig is ingeladen. Gaan we maar naar een andere oplossing zoeken. Thanx anyway.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.