webForumDet fria alternativet

Optimera kod för snabb laddning.

ASP

42 svar · 453 visningar · startad av brw

Medlem sedan juli 2000619 inlägg
Frågan#1

God morgon!

Jag har en "liten" kodsnutt som presenterar en meny från en databas som laddar om sidan när man klickat på ett val så kommer en undermeny upp.

Jag tycker den laddar lite segt.. visserligen beror det ju lite på webbservern och snabbheten på linan men man kan ju försöka få ner koden så optimal som möjligt.

Jag har försökt så gott jag kan och tänkte om någon har lust att hjälpa mig och se över koden om det är nå mer jag kan göra för att få det att ladda snabbare?

Om nån är villig så säg till så pastar jag in koden.. den är lite lång så dumt ifall nån inte har lust ;)

------------------
Ingenting är omöjligt, bara en utmaning.

Medlem sedan feb. 20001 590 inlägg
#2

använd enbart response.write dvs ingen "ensam" HTML kod. Dim'a alla variabler, använd Option.Explicit. Det är en bra start.
Loopar du igenom poster i en databas, försök använda GetRow() för att presentera informationen (inte alltid det går) eller mellanlagra alla fält i en variabel före de används.

Kanske inte säger dig så mycket, men den mest tidskritiska koden där du verkligen kan tjäna tid är vid databasoperationerna.

/T

------------------
"Den som väntar på någon som gått behöver inte vänta längre..."

Medlem sedan okt. 20001 558 inlägg
#3

Vad är GetRow()?

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan juni 200032 967 inlägg
#4

getrows() är en funktion som liksom skapar en array med två dimensioner av ett recordset.

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan juli 2000619 inlägg
#5

Hmmm heheh

Du kan väl slå en blick på min kod och ge mig förslag när du sett den :)

<% Option Explicit %>

<!--#include file="../incfiles/adminstatus.inc"-->
<!--#include file="../incfiles/adovbs.inc"-->
<!--#include file="../incfiles/databas.inc"-->

<%
Dim Connection, RS, SQLStmt, uid, avdid, avdelning, val, sid, sid2, scriptname, datumbeg, title2
Dim datumbeg2, datum2, fromyear2, frommonth2, fromday2, toyear2, tomonth2, today2, datumfran2, datumtill2

scriptname = Request.Servervariables("script_name")
sid = Request.Querystring("sid")
If sid <> "" Then
sid2 = Cint(sid)
End If
%>

<html>
<head>
<title>Meny</title>
<link REL="STYLESHEET" HREF="../style/adminmenystyle.css" TYPE="TEXT/CSS">
</head>

<body bgcolor="#cccc99" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<br>
<table border="0">
<td width="2">&nbsp;</td>

<td valign="top" width="150">

<%
Dim SQLStmt2, SQLStmt3, RS2, RS3, mvid, menyval, dl, datum
Dim menykategori, menyvalid, mkurl, mktarget, mvurl, mvtarget, title
Dim fromyear, frommonth, fromday, toyear, tomonth, today, datumfran, datumtill

SQLStmt2 = "Select id, datumbeg, fromyear, frommonth, fromday, toyear, tomonth, today, title, menyval, dl, url, target FROM menyval WHERE menyid = 1 AND aktiv = 'j' ORDER BY ordning ASC"
Set RS2 = Connection.Execute(SQLStmt2)

Do until RS2.EOF 

mvid = Cint(RS2("id"))
menyval = RS2("menyval")
dl = RS2("dl")
mvurl = RS2("url")
mvtarget = RS2("target")
title = RS2("title")
datumbeg = RS2("datumbeg")

If datumbeg = "j" Then

fromyear = RS2("fromyear")
frommonth = RS2("frommonth")
fromday = RS2("fromday")
toyear = RS2("toyear")
tomonth = RS2("tomonth")
today = RS2("today")

If frommonth < 10 Then
frommonth = 0 & frommonth
End If

If fromday < 10 Then
fromday = 0 & fromday
End If

If tomonth < 10 Then
tomonth = 0 & tomonth
End If

If today <10 Then
today = 0&today
End If

datumfran = CDate(fromyear & "-" & frommonth & "-" & fromday)
datumtill = CDate(toyear & "-" & tomonth & "-" & today)

datum = date

End If
%>

<em class="b">

<%'--------------Kolla datumbegränsning om direktlänk är JA-----------------------------------------%>

<% 
If dl = "j" AND datumbeg = "j" Then
If datum >= datumfran AND datum <= datumtill Then
%>
<A HREF="<% =mvurl %>" title="<% =title %>" target="<% =mvtarget %>"><% =menyval %></A><br>
<% End If %>
<% End If %>

<% If dl = "j" AND datumbeg = "n" Then %>
<A HREF="<% =mvurl %>" title="<% =title %>" target="<% =mvtarget %>"><% =menyval %></A><br>
<% End If %>

<%'-------------------------------------------------------%>

<% 
If dl = "n" AND datumbeg = "j" Then 
If datum >= datumfran AND datum <= datumtill Then
%>

<% If sid2 = mvid Then %>
<A HREF="<%=scriptname%>"><% =menyval %></A><BR>
<% Else %>
<A HREF="<%=scriptname%>?sid=<% =mvid %>" title="<%=title%>"><% =menyval %></A><BR>
<% End If %>
<% End If %>
<% End If %>

<%If dl = "n" AND datumbeg = "n" Then %>
<% If sid2 = mvid Then %>
<A HREF="<%=scriptname%>"><% =menyval %></A><BR>
<% Else %>
<A HREF="<%=scriptname%>?sid=<% =mvid %>" title="<%=title%>"><% =menyval %></A><BR>
<% End If %>
<% End If %>

</em>

<%'-------------------------------------------------------%>

<% 
If dl = "n" Then 

If sid <> "" Then 

SQLStmt3 = "Select menyvalid, id, url, title, target, aktiv, menykategori, datumbeg, fromyear, frommonth, fromday, toyear, tomonth, today FROM menykategori WHERE aktiv = 'j' AND menyvalid = "& sid &" ORDER BY ordning "
Set RS3 = Connection.Execute(SQLStmt3)

Do until RS3.EOF

mkurl = RS3("url") 
mktarget = RS3("target") 
menykategori = RS3("menykategori")
menyvalid = Cint(RS3("menyvalid"))
title2 = RS3("title")
%>

<% If mvid = menyvalid Then

datumbeg2 = RS3("datumbeg")

If datumbeg2 = "j" Then

fromyear2 = RS3("fromyear")
frommonth2 = RS3("frommonth")
fromday2 = RS3("fromday")
toyear2 = RS3("toyear")
tomonth2 = RS3("tomonth")
today2 = RS3("today")

If frommonth2 < 10 Then
frommonth2 = 0 & frommonth2
End If

If fromday2 < 10 Then
fromday2 = 0 & fromday2
End If

If tomonth2 < 10 Then
tomonth2 = 0 & tomonth2
End If

If today2 <10 Then
today2 = 0&today2
End If

datumfran2 = CDate(fromyear2 & "-" & frommonth2 & "-" & fromday2)
datumtill2 = CDate(toyear2 & "-" & tomonth2 & "-" & today2)

datum2 = date

End If

If datum2 >= datumfran2 AND datum2 <= datumtill2 Then
%>

<em>&nbsp;- <A HREF="<% =mkurl %>" title="<%=title2%>" target="<% =mktarget %>"><% =menykategori %></A><BR></em>

<% ElseIf datumbeg2 = "n" Then %>

<em>&nbsp;- <A HREF="<% =mkurl %>" title="<%=title2%>" target="<% =mktarget %>"><% =menykategori %></A><BR></em>

<% 
'End If
'End If
End If 
End If
%>

<%
RS3.Movenext
Loop
RS3.Close

End If 
End If 

RS2.Movenext
Loop
RS2.Close
Connection.Close
Set Connection = nothing
%>

</td>
</table>

<br>
</body>
</html>

------------------
Ingenting är omöjligt, bara en utmaning.

Medlem sedan dec. 19998 577 inlägg
#6

undvik att använda <%%> för mycket... bättre att lägga allt inom ett scriptblock:

<%If dl = "n" AND datumbeg = "n" Then %>
<% If sid2 = mvid Then %>
<A HREF="<%=scriptname%>"><% =menyval %></A><BR>
<% Else %>
<A HREF="<%=scriptname%>?sid=<% =mvid %>" title="<%=title%>"><% =menyval %></A><BR>
<% End If %>
<% End If %>

till:

<%
If dl = "n" AND datumbeg = "n" Then
If sid2 = mvid Then
Response.write "<A HREF=""&scriptname&"">"&menyval&"</A><BR>"
Else
Response.write "<A HREF=""&scriptname&"?sid="&mvid&"" title=""&title&"">"&menyval&"</A><BR>"
End If
End If
%>

------------------
Jourhavande @e SweQuake.com

Medlem sedan dec. 1999653 inlägg
#7

tveksam till om vides kod kommer funka... kommer nog bli ett "programsats förväntas"-fel eller så på den, eftersom han använt dubbelfnuttar i response.write! (dödssynd vide :e)

<%
If dl = "n" AND datumbeg = "n" Then
If sid2 = mvid Then
Response.write "<A HREF="&scriptname&">"&menyval&"</A><BR>"
Else
Response.write "<A HREF="&scriptname&"?sid="&mvid&" title="&title&">"&menyval&"</A><BR>"
End If
End If
%>

så ska de naturligtvis se ut :)

MVH

------------------
nakoz :)

Medlem sedan okt. 20001 558 inlägg
#8

Vad drack du till frukost nakoz :q

Varför skulle jag inte få skriva:

Response.Write "<a href=""test.asp"">"

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan juni 200032 967 inlägg
#9

örfil på nakoz! ;)

"" är ett escape:at citationstecken.

response.write "<a href=""blah.asp"">blaff</a>"

blir i html-koden:

<a href="blah.asp">blaff</a>

vide har rätt, rossi har rätt, och givetvis: @nders har rätt. :)

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan mars 20007 896 inlägg
#10

Nope... Nakoz har lite rätt, @anders har rätt i det han säger... men jag har mest rätt ;)

Vides kod:

<%
If dl = "n" AND datumbeg = "n" Then
If sid2 = mvid Then
Response.write "<A HREF=""&scriptname&"">"&menyval&"</A><BR>"
Else
Response.write "<A HREF=""&scriptname&"?sid="&mvid&"" title=""&title&"">"&menyval&"</A><BR>"
End If
End If
%>

Borde snarare se ut så här:

<%
If dl = "n" AND datumbeg = "n" Then
If sid2 = mvid Then
Response.write "<A HREF="""&scriptname&""">"&menyval&"</A><BR>"
Else
Response.write "<A HREF="""&scriptname&"?sid="&mvid&""" title="""&title&""">"&menyval&"</A><BR>"
End If
End If
%>

Annars blir länkarna <a href="&scriptname&...

För att infoga en variabel i en sträng med citationstecken runt variabeln i HTML-koden behövs ju en extra " eftersom att man måste inkludera variabeln också... Hänger ni med i resonemanget? :)

Eller behöver jag glajjer? ;)

Men du menar rätt @anders... Nakoz har rätt i sin kod me, men han använder inte " i sin HTML...

------------------
SPiN, bjorne.w@telia.com

--- Är det bara jag som har en britney-cursor? ---

[Redigerat av SPiN den 05 mar 2001]

Medlem sedan juni 200032 967 inlägg
#11

Nakoz har rätt i sin kod me, men han använder inte " i sin HTML...

... vilket man måste göra om attributet innehåller annat än 1-9 och a-z, som i det här fallet. men sen påstår han ju att det inte går att använda " i response.write, felaktigt.

fast jag håller med om att vide trillat en aning på citationstecknen, det är lätt att bli blind. vill man så kan man istället för dubbla citationstecken bara skriva ut en apostrof, har jag lärt mig på senare dagar. korrektamundo, spin. :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan mars 20007 896 inlägg
#12

Jag sa inte att han hade helt rätt :e

------------------
SPiN, bjorne.w@telia.com

--- Är det bara jag som har en britney-cursor? ---

Medlem sedan dec. 1999653 inlägg
#13

Nakoz har lite rätt

de räcker gott för mig! :e

men allvarligt. jag vet att man kan använda "", men de blir så himla kladdigt om de en "lång" response.write... å vi kom ju fram till för några dar sen att även ' funkade bra.. iofs vet jag inte hur de är med enkelfnuttar då de inte är a-z eller 0-9 (vilket jag erkänner var helt nytt för mig :r - trodde att de gick å skriva utan några fnuttar alls i alla fall - fel av mig).

MVH

------------------
nakoz :)

Medlem sedan mars 200116 inlägg
#14

Personligen tycker jag att HTML kod ska skrivas med " runt värden om värdet inte är tal, tex, <FONT FACE="Tahoma" SIZE=1>

Visst blir det kanske en liten prestanda sänkning på ens VBScript kod om man ska escape:a fnuttarna, men HTML koden blir bättre och snyggare.. ;)

Medlem sedan dec. 20003 563 inlägg
#15

Välkommen till Wf Deamer.

Själv brukar jag bara använda "attributvärde" när det är nödvändigt. När textvärdet har mellanslag i sig.
Jag tycker alltså att
<font face=tahoma size=1>
är snäppet trevligare än
<font face="tahoma" size="1"> .
Men om du nu ska skriva optimerad kod kan du alltid kolla in den här artikeln. Är riktigt bra.
http://www.aspsweden.com/showfile.asp?id=9

Men kortfattat så försök att använda så få <% %> som möjligt på sidan utan använd response.write lite överdrivet ibland. Källkoden ser sällan snygg ut men om man kan leva med det så...

Visst blir det kanske en liten prestanda sänkning på ens VBScript kod om man ska escape:a fnuttarna, men HTML koden blir bättre och snyggare..

Jazå??? Lite motsägelsefullt kanske?
Det spelar nog inte så stor roll egentligen?! ;)

------------------
MVH // Cyprys
Cyprys bakgård

Om du någonsin ser mig bli misshandlad av polisen, var snäll och lägg ner videokameran och kom och hjälp mig i stället.

[Redigerat av cyprys den 07 mar 2001]

Medlem sedan juli 20003 825 inlägg
#16

Kåd som kan missuppfattas är dålig kåd.

Skit samma om den är snygg eller ful. Är det inte super solklart vad som händer när man kollar på koden blir det underkännt.

Om man dessutom inte kan köra copy/paste till nästa projekt så är koden oanvändbar på riktigt.

Varför tänka om man slipper! :-)

Själv använder jag Think Only Once Programming och tänker aldrig mer än nödvändigt.

------------------
Never underestimate your opponents.

Medlem sedan okt. 20001 558 inlägg
#17

Kåd som kan missuppfattas är dålig kåd

Var det ett skämt :q

------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho

Medlem sedan mars 20007 896 inlägg
#18

Det finns rätt många sätt att optimera koden, och ett av de bästa tipsen är redan sagda... dvs. att inte överdriva användningen av <% och %>. Ett annat bra sätt att optimera läsningen från databaser, som kan ta mycket tid, är att inte använda SELECT *... för ofta. I många lägen behöver man inte alla fält från databasen, då finns det prestanda att hämta med att endast välja ut de fält som är av intresse. SELECT id, namn FROM...

Såg att du hade använt det, men kan vara värt att nämnas ändå. Däremot har du valt att välja ut förb****t många fält, då kan det vara lika bra att använda en liten * istället :)

------------------
SPiN, bjorne.w@telia.com

--- Är det bara jag som har en britney-cursor? ---

[Redigerat av SPiN den 07 mar 2001]

Medlem sedan feb. 20001 590 inlägg
#19

I XHTML måste man ha " runt argumenten till containertaggarna. I HTML kan man göra "som man vill" men jag brukar köra " runt strängar och inget runt siffror.

Ska man skriva ett Javascript med response.write blir det problem, eftersom man i Javascript har ' och inte ", då kan man ha "" som blir ' i den genererade koden.

/T

------------------
"Den som väntar på någon som gått behöver inte vänta längre..."

Medlem sedan feb. 200112 078 inlägg
#20

Spårade inte inlägget ut lite runt alla de där dubbelfnuttarna nånstans? :e

Det bara svävar omkring fnuttar, apostrofer, enkelfnuttar och diverse andra konstiga tecken i tråden nu. ;)

Kul diskussion måste jag säga :)

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

270 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)