Salut. Scriu că sa va intreb cum numărați voi viewurile generate de orice tip de utilizator ( cu sau fara cont) generate pentru un anumit topic, fie postare de blog fie imagine sau altceva
Pe scurt, Redis
Eu întrebăm de logica folosită pentru asta.
eu am un img de 1px inserat cu js la finalul incarcarii paginii
te referi la cum facem asta dpdv tehnic (ex: raspunsul lui @kleampa) sau la ce consideram a fi un view (eventual unic) ?
Da tehnic. Folosiți un token sau ip ul utilizatorului, faceți logica pe back end sau pe front end. La asta mă refeream
Google Analytics sau Piwik pe frontend e probabil cea mai simpla solutie.
if(!('gensid' in window)){
window.gensid = function() {
let array = new Uint32Array(8);
window.crypto.getRandomValues(array);
let str = '';
for (let i = 0; i < array.length; i++) {
str += (i < 2 || i > 5 ? '' : '-') + array[i].toString(16).slice(-4);
}
return str;
};
(function(g) {
if('localStorage' in window)
try { g = window.localStorage; }
catch(e) { console.error('localStorage access failed:', e); }
if(g&&g.getItem('sid')!==null){
let ts = Math.floor(Date.now()/1000);
if (!g.getItem('ts')===null) {
g.setItem('ts', Math.floor(Date.now() / 1000));
}
return;
}
if(g) {
g.setItem('sid', gensid());
g.setItem('ts', Math.floor(Date.now() / 1000));
}
})();
window.clearsid = function(g) {
try { g = window.localStorage; }
catch(e) { console.error('localStorage access failed:', e); }
if (g) {
let ts = Math.floor(Date.now() / 1000);
if (g.getItem('ts')!==null) {
let ts0 = parseInt(g.getItem('ts'), 10);
if (!isNaN(ts0) && (ts - ts0) > 20 * 60) { // 20 minutes
g.clear();
}
}
}
};
}
codul ăsta crează un token pe care poți să-l trimiți la server.
din cînd în cînd apelezi clearsid() care resetează token-ul dacă e mai vechi de 20 de minute
nu e GDPR friendly