Finns det något jag glömt optimera?
(koden ligger på en förstasida så det är meningen att den ska gå ultrasnabbt)
Option Explicit
Response.Buffer = True
DIM rubrik, ingress, artikel, SQL, RS, nyheter, a, Connection, arrayp
SQL = "SELECT TOP 3 id, rubrik, ingress, artikel FROM Nyheter " & _
"WHERE (start_datum < Now() OR start_datum IS NULL) " & _
"AND (stop_datum >= Now() OR stop_datum IS NULL) " & _
" ORDER BY publ_datum DESC, start_datum DESC, id DESC"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "c:\inetpub\wwwroot\vf\nyheter\nyheter.mdb"
Set rs = Connection.Execute(SQL)
If NOT rs.EOF Then arrayp = rs.GetRows()
rs.Close: Set rs = nothing
Connection.Close: Set Connection = nothing
For a = 1 to Ubound(arrayp, 2)
If NOT isNull(arrayp(2, a)) Or NOT arrayp(2, a) = "" Then
arrayp(2, a) = Replace(arrayp(2, a), vbCrLf, "<BR>")
End If
Response.Write "<FONT FACE=""Arial, Helvetica"" SIZE=3><B>" & arrayp(1, a) & "</B></FONT><BR>" & _
"<FONT FACE=""Verdana, Arial, Helvetica"" SIZE=1>" & arrayp(2, a)
If arrayp(3, a) <> "" Then
Response.Write "<DIV ALIGN=""right""><A HREF=""nyheter/detail.asp?id=" & arrayp(0, a) & """>Läs mer</A></DIV>"
End If
Response.Write "</FONT><HR SIZE=1 ALIGN=""left"" COLOR=""#DDDDDD"">"
Next
Erase arrayp
Det kommer, det kommer var lugn! I sådana här "utvecklingstider" så skiter man ju i allt vad CSS heter och kör på den gamla hederliga varianten. Men sen ska jag "implentera" skriptet på förstasidan.
Tiden för att gå igenom scriptet ligger på 49 ms som bäst och ca 60 i snitt.
Ok, ska lägga det på minnet. Apropå din if-sats. Minaa DB-hämtning ser idag ut så här:
strSQL = "SELECT msgAntal FROM forumUpdate"
Set RecSet = Connect.Execute(strSQL)
IF NOT RecSet.EOF THEN
arrRecords = RecSet.GetRows
Records = "1"
End If
Men jag skulle kunna ta bort Records = "1" (Markerar om den har gått in i if-satsen). Det skulle alltså räcka med att jag skriver så här sen senare i koden eller?
Förresten Pace. Vill du öka hastigheten så kan du göra den till en statisk-sida, och vid uppdateringar så hämtar du bara värdena från DB:n och gör en writeLine funktion som skapar sidan statiskt automatiskt.
Då slipper du DB-kopplingen. Det kan ta några ms längre att göra uppdateringar för administratören men där är det egentligen bara en person som gör det. Första sidan besöks av så många fler än en. Eller vad tror du?
Du kan ju fortfarande ha det dynamiskt, du skipar bara DB-kopplingarna. Alltså DB-hämtningen görs bara en gång och det är när administratören gör uppdateringen.
Ok, men de du kan påverka kan du bara inkludera i en include-fil till första sidan. På så sätt får du bort onödiga DB-hämtningar, som tex din kod ovan.
SQL = "SELECT TOP 3 id, rubrik, ingress, artikel FROM Nyheter " & _
"WHERE (start_datum < Now() OR start_datum IS NULL) " & _
"AND (stop_datum >= Now() OR stop_datum IS NULL) " & _
" ORDER BY publ_datum DESC, start_datum DESC, id DESC"
Om du kollar på denna SQL satsen så ser du att vissa nyheter kan publiceras inom ett visst datum/tid. Med andra ord kan jag inte skapa statiska filer... oavsett hur mycket du vill det!
Förresten så tycker jag att 60 ms är en överkomlig tid.
Jag kör ett dagligt-citat-script som jag gjorde för ett tag sen och det ser ut så här:
IF Right(citatDatum,5) <> Right(Datum,5) THEN 'Om en ny dag så ska citatet uppdateras
DB_koppling
strSQL = "SELECT citatText, citatNamn FROM citat WHERE citatDatum=#" & Datum & "#"
Set RecSet = Connect.Execute(strSQL)
IF not RecSet.EOF THEN
arrRecords = RecSet.GetRows()
citatText = arrRecords(0, 0)
citatNamn = arrRecords(1, 0)
End if
RecSet.Close
Set RecSet = nothing
Connect.Close
Set Connect = nothing
citatText = Server.HTMLEncode(citatText)
citatText = replace(citatText,vbcrlf,"<br>")
Text_koppling
T.WriteLine "<" & "%"
T.WriteLine "citatDatum = """ & Datum & """"
T.WriteLine "citatText = """ & citatText & """"
T.WriteLine "citatNamn = """ & citatNamn & """"
T.WriteLine "%" & ">"
T.Close
Set T = nothing
End if
Sen när jag ska använda skriptet så inluderar jag det bara och då får jag tillgång till fyra "dynamiska" variablar. Detta kan du göra också göra.
Såg ett klumpigt fel jag gjorde i skriptet nu...haha...använde mig av getrow utan att behöva göra det. Jaja, det var gamla tider det när man inte var så bra på ASP...:)