Hoi allemaal!
Vandaag heb ik weer wat geklooid aan mijn website, en ik heb wat afgemaakt, maar ik vraag me toch af of het efficiënter/beter kan. Ik leg het even uit:
Mijn website heeft een news sectie, waar dus (nee joh?) nieuwsposten gedaan worden. Op die nieuwsposten kunnen de lezers ook comments posten, en zo kunnen er dus discussies onstaan. Nu wou ik dat de gebruiker bij elke visit perfect weet hoeveel nieuwe comments er geplaatst zijn op elke newspost x.
Eerst had ik dat opgelost door simpelweg de datum van zijn laatste bezoekje in een cookie op te slaan, en die te vergelijken met de laatste comment. Dit werkt perfect als er maar 1 nieuwspost zou zijn op de site, maar ik moet dus een onderscheid kunnen maken tussen alle nieuwsposten (dus elke nieuwspost heeft een andere "bezoekdatum"). Want als er bijvoorbeeld 5 newsposten zijn met nieuwe comments, en de gebruiker heeft maar net tijd om er 3 te bezoeken, dan worden die overige 2 newposten niet meer als "updated" aanzien!
Nu heb ik het zo opgelost:
· Bij het inloggen op de site controleer ik of de gebruiker reeds een ID nummer heeft (wat zich in de cookie bevindt). Is dit niet zo, dan maak ik een unieke ID nummer aan en zet die in de cookie van de gebruiker.
· Als een gebruiker (die heeft dus ondertussen reeds een ID nummer) op een newspost klikt, ga ik in de mysql dbase kijken wat zijn laatste bezoek was op die newspost. Zo kan ik zien of hij er ooit al geweest is en wanneer(zo nee: alle comments zijn nieuw voor hem, zo ja: ahv. de datum kan ik perfect het aantal nieuwe comments uitrekenen).
· Bij het klikken op een nieuwspost update ik de gebruiker zijn dautm van die nieuwspost in de dbase.
ECHTER:
Volgens mij is dit niet erg efficiënt: Stel je voor dat de website +/- 50 regelmatige bezoekers heeft en dat er om de 2/3 dagen een nieuwspost wordt gedaan. Dat houdt dus in dat er voor 1 nieuwspost al 1 * 50: 50 rijen gereserveerd worden in de mysql dbase, om de datum bij te houden. Twee à drie nieuwsposten per week bekent dus +/- 150 rijen per week. Op jaarbasis is dit 7800! En dit nog maar slechts voor 50 gebruikers!
Mijn vraag is nu: kan dit niet veel simpeler? Ik heb er hard over nagedacht, maar volgens mij was de enige oplossing dat ik elke datum van elke gebruiker van elke nieuwspost apart moest opslaan in de dbase. Maar hoe doen die sites met duizenden bezoekers dat dan? De search was niet zo'n succes
(allemaal standaardvragen over cookies)
Allemaal bedankt
EDIT: de tabel in mysql heeft dus bijv. volgende kolommen:
· id
· user_id
· newspost_id
· lastvisit_datetime
Vandaag heb ik weer wat geklooid aan mijn website, en ik heb wat afgemaakt, maar ik vraag me toch af of het efficiënter/beter kan. Ik leg het even uit:
Mijn website heeft een news sectie, waar dus (nee joh?) nieuwsposten gedaan worden. Op die nieuwsposten kunnen de lezers ook comments posten, en zo kunnen er dus discussies onstaan. Nu wou ik dat de gebruiker bij elke visit perfect weet hoeveel nieuwe comments er geplaatst zijn op elke newspost x.
Eerst had ik dat opgelost door simpelweg de datum van zijn laatste bezoekje in een cookie op te slaan, en die te vergelijken met de laatste comment. Dit werkt perfect als er maar 1 nieuwspost zou zijn op de site, maar ik moet dus een onderscheid kunnen maken tussen alle nieuwsposten (dus elke nieuwspost heeft een andere "bezoekdatum"). Want als er bijvoorbeeld 5 newsposten zijn met nieuwe comments, en de gebruiker heeft maar net tijd om er 3 te bezoeken, dan worden die overige 2 newposten niet meer als "updated" aanzien!
Nu heb ik het zo opgelost:
· Bij het inloggen op de site controleer ik of de gebruiker reeds een ID nummer heeft (wat zich in de cookie bevindt). Is dit niet zo, dan maak ik een unieke ID nummer aan en zet die in de cookie van de gebruiker.
· Als een gebruiker (die heeft dus ondertussen reeds een ID nummer) op een newspost klikt, ga ik in de mysql dbase kijken wat zijn laatste bezoek was op die newspost. Zo kan ik zien of hij er ooit al geweest is en wanneer(zo nee: alle comments zijn nieuw voor hem, zo ja: ahv. de datum kan ik perfect het aantal nieuwe comments uitrekenen).
· Bij het klikken op een nieuwspost update ik de gebruiker zijn dautm van die nieuwspost in de dbase.
ECHTER:
Volgens mij is dit niet erg efficiënt: Stel je voor dat de website +/- 50 regelmatige bezoekers heeft en dat er om de 2/3 dagen een nieuwspost wordt gedaan. Dat houdt dus in dat er voor 1 nieuwspost al 1 * 50: 50 rijen gereserveerd worden in de mysql dbase, om de datum bij te houden. Twee à drie nieuwsposten per week bekent dus +/- 150 rijen per week. Op jaarbasis is dit 7800! En dit nog maar slechts voor 50 gebruikers!
Mijn vraag is nu: kan dit niet veel simpeler? Ik heb er hard over nagedacht, maar volgens mij was de enige oplossing dat ik elke datum van elke gebruiker van elke nieuwspost apart moest opslaan in de dbase. Maar hoe doen die sites met duizenden bezoekers dat dan? De search was niet zo'n succes
Allemaal bedankt
EDIT: de tabel in mysql heeft dus bijv. volgende kolommen:
· id
· user_id
· newspost_id
· lastvisit_datetime