Katalog ASP odkaz∙: Hledßte informace o ASP? Zkuste nßÜ nov² katalog odkaz∙ na ASP weby. Vφce zde...
TextLink.cz
VyÜlo: 8.1.2001 Rubrika: ASP - Tipy

Zrychlete svΘ ASP strßnky a₧ o 200%
Chcete zrychlit generovßnφ ASP strßnek? V Φlßnku se dozvφte n∞kolik tip∙, kterΘ je zrychlφ a₧ o 200%!

SouΦßstφ objektu Response je takΘ vlastnost Flush. Mo₧nß ani nevφte, co prßv∞ tato metoda umφ. OdeÜle aktußlnφ stav vaÜφ strßnku p°φmo klientovi. Je to velmi u₧iteΦnß funkce, kterou vÜak musφte pou₧φvat zßrove≥ s vlastnostφ Buffer nastavenou na hodnotu True. Ta nastavuje jestli se majφ data pr∙b∞₧n∞ odesφlat klientovi, nebo jestli se odeÜle celß strana najednou. Pokud byste vÜak pou₧ili jen tuto vlastnost a nedoplnili ji o Response.Flush script bude ve skuteΦnosti rychlejÜφ, ale opticky bude pomalejÜφ.

Co to znamenß? Pokud t°eba pou₧φvßte vφce tabulek vedle sebe mohli byste je klidn∞ zruÜit a dßt do jednΘ. Nem∞lo by to smysl.

Na p°φkladu si ukß₧eme pou₧itφ metody Response.Flush. P°i psanφ tohoto Φlßnku jsem zßrove≥ ud∞lal n∞kolik test∙ rychlosti.

<%Response.Buffer = True%>
<%Server.ScriptTimeOut = 1000%>
<html>
<head>
<title>Test</title>
</head>

<body>
<%
Dim citac, sel
str="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\period") & "\pokus.mdb;"
Set databaze = Server.CreateObject("ADODB.recordset")
databaze.Open "SELECT * From kratke",str

for citac = 1 to 10000
response.write databaze("Zprava")
response.flush
databaze.MoveNext
Next
databaze.Close%>
Konec
</body>
</html>

Na p°φkladu vydφte, ₧e nejd°φve musφme nastavit Response.Buffer na True. Pokud mo₧no jeÜt∞ p°ed tagy <html>. Potom po ka₧dΘm vypsßnφ polo₧ky z databßze m∙₧eme vypsat po₧adovanß data. Toto nenφ nejvhodn∞jÜφ p°φklad. Nφ₧e uvßdφm daleko pou₧iteln∞jÜφ. Zde vßm chci pouze ukßzat jak jsem testoval. Moje dotazy pro testovßnφ byly v²razn∞ slo₧it∞jÜφ. Zde je uvßdφm zjednoduÜenΘ, kv∙li snadn∞jÜφmu pochopenφ problΘmu.

Druh² p°φklad bez pou₧itφ vlastnosti Response.Buffer = True

<%Server.ScriptTimeOut = 1000%>
<html>
<head>
<title>Test</title>
</head>

<body>
<%
Dim citac, sel
str="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\period") & "\server\pokus.mdb;"
Set databaze = Server.CreateObject("ADODB.recordset")
databaze.Open "SELECT * From kratke",str

for citac = 1 to 100
response.write databaze("Zprava")
databaze.MoveNext
Next
databaze.Close%>
Konec
</body>
</html>

Nynφ koneΦn∞ Φasy:

Buffer True
Buffer False
138 s / 1000 vypsßnφ 216 s / 1000 vypsßnφ

Zde vydφte ₧e se v²razn∞ vyplatφ pou₧φvat Response.Buffer nastaven² na True.

Nynφ se koneΦn∞ podφvßme kde se tedy opravdu pou₧φvat Response.Flush. Je to p°edevÜφm ve slo₧it∞jÜφch SQL dotazech. Kdy zatφmco se klientovi ji₧ posφlß Φßst strßnky, druhß Φßst se teprve generuje. M∙₧ete tak vyu₧φt rychlosti Buffer True i t°eba vφce tabulek.

<html>
<head>
<title>Test</title>
</head>

<body>
<%
Dim citac, sel
str="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\period") & "\server\pokus.mdb;"
Set databaze = Server.CreateObject("ADODB.recordset")

SQL_Dotaz_1

response.flush

SQL_Dotaz_2
%>
</body>
</html>

Vojt∞ch Zav°el
v.zavrel@volny.cz



   Souvisejφcφ Φlßnky
TextLink.cz