30. december 2004 - 20:08Der er
37 kommentarer og 1 løsning
Reloadsikker statistik?
Hej.
Jeg er igang med at lave en statistik der viser antal hits og andre brugbare statistiske oplysninger om min artikelsektion. Via ASP tæller jeg antal besøgende pr. artikel, men har opdaget at hvis brugeren opdaterer siden, tæller opdateringen for et hit.
Spørgsmål: Hvordan undgår jeg at tælleren opdateres ved opdatering af vinduet, men således at tælleren stadig registrerer et hit hvis brugeren forlader siden og vender tilbage til artiklen igen (altså et ægte hit)?
Skal jeg bruge cookies, session.sessionID eller hvad... Hvordan løser jeg opgaven på den mest optimale måde?
Jeg vil gerne bede om eksempler på løsninger der kan anvendes :-)
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Slettet bruger
30. december 2004 - 20:32#1
hvis du tæller antal hits på den omtalte artikel vil jeg mene det er korrekt det du gør, hvorimod hvis det er antallet af unikke besøgende ville jeg lave en cookie der holder 20 min. og derefter tælle den pågældende som en ny besøgende.
hvis du vil have hits men ikke mere end et hits pr. artikel pr. bruger
ville jeg oprette en unik session for artiklen som du så tjekker på inden du tæller op.
Det er som ikke så svært du sætter blot følgende om din counter kode :
If Session("Count") = "" Then Session("Count") = "Hit" '--- Her indsætter du din kode ! End If
På den måde kan folk trykke F5 alt det der lyster dem og komme tilbage inde for samme session uden der tælles igen.
/Websam
Synes godt om
Slettet bruger
30. december 2004 - 20:50#4
softspot>>
vil jo ikke just virke med Request.ServerVariables("HTTP_REFERER")... så ville to forskellige artikler heller ikke tælle
Synes godt om
Slettet bruger
30. december 2004 - 20:51#5
websam>>
måske en ide at lave din session unik for hver artikel, hvis de statistikken omfatter hver enkelte artikel, ellers er den stump kode jo ikke meget værd
Ja klart det var min session ved besøg på min forside jeg havde taget der du kalder den blot Session("art-1234") istedet for og med 1234 værende det id nummer artiklen har så skulle den være der :o)
Det er vel egentlig antallet af unikke besøgende jeg vil tælle...
Men hvordan griber jeg det an når jeg viser alle artikler på den samme ASP-side (hvordan sikrer jeg at det kun er læste artikler der ikke registrerer den besøgende de næste 20 min.)?
guestis > afhænger det ikke af hvordan dit request ser ud... Hvis nu artiklen findes ved at siden kaldes med en parameter (f.eks. artikelid=897362), så ville det vel fungere... eller hvad?
Synes godt om
Slettet bruger
30. december 2004 - 21:03#9
du kunne evt. logge brugerens besøgstid samt artikel id i en database + have en tabel du tæller op for hver artikel alt efter om den besøgende opfylder kravet til at være unik ud fra log tabellen i databasen, derved er det database serveren der får lidt at lave istedet for webserveren... ville jeg nok foretrække
Men kan man ikke bruge Session.SessionID til noget? Så vidt jeg ved er det et unikt ID der tildeles den enkelte besøgende hver gang et nyt besøg foretages.
Ja, sessionID sættes påny første gang en bruger surfer ind på siden og når det er udløbet (typisk efter 20 min), så det kan kun benyttes til at se om en bruger har været på før i den aktuelle session.
Den bedste løsning ser for mig også (guestis sagde det vist tidligere) ud til at være en databaseløsning, så du ikke fylder serverhukommelsen op med session-variable. Access kan stadig benyttes til at optælle besøg (selvom den nok kommer til at give problemer med skalerbarheden, men det kan du jo tage til den tid...).
Hvis du vil huske brugere på tværs af sessions skal du nok bruge en cookie som identificerer brugeren i en længere periode end deres session varer...
Mit eget forslag med HTTP_REFERER fra tidligere fungerer heller ikke, hvis du vil have unikke besøg (med ud fra den oprindelig beskrivelse mener jeg stadig at det havde fungeret :)).
Men vil det være for ressourcekrævende? Og hvor mange brugere vil jeg kunne have ad gangen på den måde, før serverens hastighed bliver påvirket?
Synes godt om
Slettet bruger
31. december 2004 - 00:23#19
Jeg vil faktisk tro at denne metode ville være mindre resource krævende end den med databasen, havde slet ikke tænkt på at liste dem da jeg kom med forslag.
hvor mange brugere du kan have online tror jeg ikke du skal bekymre dig om hvis det kun drejer sig om en enkelt session for hver bruger
Men skulle du ikke vide hvormange der besøgte den enkelte artikel? I så fald skal du vel også have noget information om brugeren med i din streng...?
Synes godt om
Slettet bruger
31. december 2004 - 00:28#21
hvorfor skal der noget infor om brugeren med i strengen, strengen skal blot bruges til at tjekke om brugeren har været der før, hvis ikke opdateres databasen med en og session bliver opdateret med et ekstra id
Jeg har allerede tælleren parat (kan ligeledes ses i mit tidligere kodeeksempel): <% ... rs("Hits") = rs("Hits") + 1 rs("SidsteHit") = ShortDate ... %>
I ovenstående eksempel opdaterer jeg 'Hits' og 'SidsteHit' i den samme database hvor artiklerne ligger i. Det jeg vil er at filtrere hit-tælleren, så den ikke ukritisk opdaterer statistikken, hvis brugeren f.eks. opdaterer siden.
På den måde håber jeg at få en nogenlunde realistisk statistik over interessen for de enkelte artikler (hvilke er hot, og hvilke er not) :-)
Men min idé med at fylde ID'erne i en liste i en session er måske ikke tosset?
Synes godt om
Slettet bruger
31. december 2004 - 00:40#24
jeg ville nok bruge ideen med den session, kan jo laves rimeligt hurtigt og effektiviteten har du jo allerede stået for ;O)
Kan du give en mere detaljeret forklaring på dit eksempel? Metoderne i dit eksempel er helt nye for mig :-)
Hvordan opdaterer jeg f.eks. en session med mere end et id?
Synes godt om
Slettet bruger
31. december 2004 - 01:00#29
' smide 1 ekstra id i session Session("hat") = Session("hat") & ", 57"
' smide 2 ekstra id i session Session("hat") = Session("hat") & ", 57, 61"
' spiltter en session ved komma op i et array for at vi kan arbejde med de enkelte tal a=Split(session("hat"),",") For i=0 to ubound(a) If a(i) = artikelid Then harvaerether = "ja" End IF next
' Simpel if der tjekker resultatet ovenfor om der skal opdateres eller ej If harvaerether <> "ja Then 'opdater db Session("hat") = Session("hat") & "artikelid" end if
men hvorfor skal du smide flere id ind på en gang ?
Jeg har ikke testet det endnu (jeg er for træt til at kode mere i nat), men jeg har forstået hvordan det fungerer, og kan se hvordan det skal laves; Det er det vigtigste...
Tak for din hjælp, og tak for tålmodigheden ;-)
// Lukker
Apo
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.