Application lever så længe sitet kører og der er aktive sessions. En application starter kun forfra når: - Sitet stopper og starter - Der ikke er flere aktive sessions - Global.asa overskrives
En Session stopper når: - Den har været inaktiv i Session.TimeOut minutter - Session.Abandon køres
Jeg skal bruge det til at vise de 10 nyeste indlæg på min side. For at det ikke skal være for tungt for min database vil jeg så gemme dem i en Application og sætte levetiden til 5 min.
Lav en Applicationvariabel der indeholdet top10'en. Se her
if dateDiff("n", Application("Top10Lavet"), Now()) > 5 then Application("Top10") = "" end if
if Application("Top10") = "" then 'Kode der henter og gemmer, sådan noget: Application("Top10") = Rec.GetRows ' eller hvad du nu vil Application("Top10Lavet") = Now() end if
Undskyld jeg spørger :o) Men hvad er fordelen ved at lave det over applicationen på den måde? Bliver der sparet meget belastning på databasen eller? For umiddelbart rent kodemæssig så synes jeg der er mere Så bare nysgerrig :o)
Hvis Top 10 skal vises på forsiden, og måske på alle mulige andre sider, vil det betyde at databasen skal spørges rigtig mange gange når brugeren surfer rundt på sitet. Der spares altså en masse databasekald.
Det er en form for offline data, og det er en rigtig god idé at bruge. Jeg har selv brugt det en del, f. eks. i butikker, hvor varetekst og pris kan gemmes på den måde. Det er jo endnu et eksempel på data der ikke ændrer sig særlig tit, men som skal vises mange gange på siden.
Man skal naturligvis ikke hive hele databasen over i Application variabler, det bliver nok for meget
Jeg ser lige om jeg kan finde en artikel jeg engang læste om netop dette ....
ok jeg bliver klogere og klogere Men nu jeg alligevel er med så tillader jeg mig lige at spørge om en ting. Skal applicationen da ikke også slå op i databasen? For hvor er besparelsen så henne... måske jeg burde læse om det :o)
Overvej at følge mit forslag, at du opdaterer variablen når der gemmes nye indlæg. Så vil top 10 altid være up to date, og hvis der kommer mindre end et indlæg ind for hvert 5. minut vil det spare endnu flere opslag.
Men sørg for at du undersøger om variablen er tom der hvor den skal bruges. Så slipper du for at der kommer fejl hvis en bruger vil se siden samtideig med at variablen opdateres.
busschou > Application variablen indeholder IKKE en åben connection, denne idé er der mange der har fået og opgivet igen. Det man gemmer er ren tekst, evt et Array.
ldanielsen, du har ret i at det oftest ville være smartest. Men "problemet" er at jeg har et nyt indlæg ca. hvert 10 sek. og derfor er det for krævende.
falslev >> hvis ikke det er vildt hemmelig kode så vil jeg blive glad hvis du (når det virker) ville skrive herinde hvordan du konkret gjorde...det ville være en god hjælp for mig tror jeg
Jeg har lavet en hver 86 sek. opdatere med antal brugere online.
IF Application("StatUsersOnline.LastModified")="" THEN Application("StatUsersOnline.LastModified")=Now() ELSEIF DateDiff("s", Application("StatUsersOnline.LastModified"), Now()-0.001)>0 THEN '? 0.001=86 sek Application("StatUsersOnline")="" END IF
IF Application("StatUsersOnline")="" THEN CntUsersOnlineDateTime = Mid(FormatDateTime(Now()-0.010199, 2), 7, 4) & Mid(FormatDateTime(Now()-0.010199, 2), 4, 2) & Mid(FormatDateTime(Now()-0.010199, 2), 1, 2) & Mid(Replace(FormatDateTime(Now()-0.010199, 3), ":", "", 1, -1, 1), 1, 6) '? 0.010199=15 min. SQLstmt = "SELECT COUNT(DISTINCT SessionID) AS records FROM users_online WHERE LogDate>" & CntUsersOnlineDateTime & ";" Set RSCount = Conn.Execute(SQLstmt) Application.Lock() Application("StatUsersOnline")=FormatNumber(RSCount("records")-1, 0) Application("StatUsersOnline.LastModified")=Now() Application.UnLock() RSCount.Close Set RSCount = Nothing END IF
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.