Tja!
Jepps, du kan slänga bort dina gräsliga <font> och använda CSS :e
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
42 svar · 527 visningar · startad av Pace
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
[r] lite färgmarkeringar skadar väl aldrig :)
------------------
Peter D
[Redigerat av Pace den 25 aug 2001]
Tja!
Jepps, du kan slänga bort dina gräsliga <font> och använda CSS :e
mvh Jörgen
------------------
// Fin signatur
Jorgen hp = new Jorgen(this);
Bah!!!
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.
------------------
Peter D
Istället för att skriva:
Set rs = Connection.Execute(SQL)
If NOT rs.EOF Then arrayp = rs.GetRows()
Kan du lägga det i ett array direkt utan att lagra recordsettet i ett objekt:
arrayp = Connection.Execute(SQL).GetRows()
Sedan kan du göra en check om det är ett array innan du försöker att använda den:
If IsArray(arrayp) Then
'Det var ett array
End if
------------------
Vide rox = new Vide();
rox.learn("C#");
webeye.nu
Det fungerar väl inte så bra om man får ett tomt recordset zom resultat, dvs
arrayp = Connection.Execute(SQL).GetRows()
ger ifrån sig celluiter då.
------------------
essentitia preter non sans multiplicandum
Jag testade "Connection.Execute(SQL).GetRows()" först, men det gav bara "Objekt krävs..."
------------------
Peter D
Varför fungerar den inte för Pace, Vide? Det var en smart lösning annars.
------------------
Alltid lär man sig något nytt varje dag...
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?
If IsArray(arrayp) Then
'Det var ett array
End if
Visste inte att det fanns ett sådant kommando.
------------------
Alltid lär man sig något nytt varje dag...
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?
------------------
Alltid lär man sig något nytt varje dag...
[Redigerat av Lukaspojken den 25 aug 2001]
Låter som en bra idé Lukaspojken, men "tyvärr" så ska sidan vara dynamisk.
... och data får jag när jag använder GetRows, så jag vet inte vad som kan vara problemet. :q
------------------
Peter D
Vad är det som är dynamiskt på första sidan?
------------------
Alltid lär man sig något nytt varje dag...
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.
------------------
Alltid lär man sig något nytt varje dag...
Nej. "Lite småsaker" innefattar dynamiska saker som jag eventuellt inte kan kontrollera - och kan därmed inte skapa statiska filer.
------------------
Peter D
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.
------------------
Alltid lär man sig något nytt varje dag...
[Redigerat av Lukaspojken den 25 aug 2001]
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! :e ;)
Förresten så tycker jag att 60 ms är en överkomlig tid.
------------------
Peter D
[Redigerat av Pace den 25 aug 2001]
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.
------------------
Alltid lär man sig något nytt varje dag...
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...:)
------------------
Alltid lär man sig något nytt varje dag...
Jo men ett "dagligt-citat-script" uppdateras i ett och samma intervall: en gång om dagen.
Ett nyhetsscript där man kan ställa in tiden då en nyhet ska publiceras är ju lite krångligare eller hur?
------------------
Peter D