[đ ] Ajouter un compteur de visites Ă un blog GitHub Pages
âš RĂ©sumĂ© de GPT-5.5 ă
RĂ©cit de lâajout dâun Cloudflare Worker et de D1, dans la limite de lâoffre gratuite, Ă un blog statique GitHub Pages afin de conserver les valeurs cumulĂ©es existantes de GA tout en affichant les visites du jour et les vues par article.
Jâai eu envie dâajouter un compteur de visites au blog.
Pas parce que la fonctionnalitĂ© elle-mĂȘme est impressionnante. Câest plutĂŽt lâinverse. Elle paraĂźt tellement Ă©vidente, mais sur un blog statique créé avec GitHub Pages, elle nâest pas prĂ©sente naturellement.
Google Analytics Ă©tait dĂ©jĂ installĂ©. En tant quâadministrateur, je pouvais ouvrir GA et voir le nombre de visiteurs et de vues. Mais ces chiffres nâĂ©taient pas visibles dans le blog. Les visiteurs ne pouvaient pas savoir si ce blog Ă©tait encore lu aujourdâhui, ni dans quelle mesure les articles rĂ©cents avaient Ă©tĂ© consultĂ©s.
Je voulais retrouver cette petite impression des indicateurs de Naver Blog, avec Aujourd'hui, Cumul et vues par article affichĂ©s discrĂštement. Ce nâĂ©tait pas vraiment un chiffre pour se mettre en avant, mais plutĂŽt un signal indiquant que le blog nâest pas une page statique morte, et quâil continue dâĂȘtre lu.
Le problÚme était donc simple.
Est-ce que je pouvais conserver les avantages dâun blog statique gratuit tout en ajoutant seulement une toute petite partie dynamique pour les statistiques de visite ?
Jâai dâabord fixĂ© les conditions
Je ne voulais pas agrandir toute la structure simplement pour ajouter un compteur de visites.
DĂšs le dĂ©part, jâai fixĂ© quelques conditions.
- Conserver le flux dâĂ©criture avec GitHub Pages et Jekyll.
- Ne pas utiliser de serveur payant.
- RĂ©soudre le problĂšme dans la limite de lâoffre gratuite, que ce soit avec Cloudflare ou Firebase.
- Lâafficher discrĂštement prĂšs du profil.
- Faire en sorte quâil ne devienne pas Ă©trangement long sur mobile.
- Afficher non seulement les statistiques de tout le blog, mais aussi les vues par article.
- Ne pas jeter les valeurs cumulées existantes de GA.
La derniÚre condition était particuliÚrement importante.
Si jâajoutais un nouveau compteur et que les vues repartaient de 0, ce serait Ă©trange. Le blog Ă©tait dĂ©jĂ en ligne, et GA contenait dĂ©jĂ des vues accumulĂ©es depuis quelque temps. Mais continuer Ă lire uniquement GA restait Ă©loignĂ© de la sensation de compteur que je voulais.
Je pensais quâil suffirait de lire GA
Au dĂ©but, je pensais quâil suffisait de lire lâAPI Google Analytics.
Puisque GA possĂ©dait dĂ©jĂ les donnĂ©es, il me semblait quâun Cloudflare Worker pouvait simplement appeler lâAPI GA et renvoyer les chiffres. En pratique, jâai créé un compte de service, ajoutĂ© les autorisations sur la propriĂ©tĂ© GA, et les appels API fonctionnaient.
Mais une fois le tout branchĂ©, ce nâĂ©tait pas ce que je voulais.
GA est un outil dâanalyse. Il est utile pour que lâadministrateur observe les tendances plus tard, mais il Ă©tait ambigu comme compteur de visites rĂ©agissant directement sur lâĂ©cran du blog. Le chiffre Aujourd'hui posait particuliĂšrement problĂšme. Si je venais moi-mĂȘme dâentrer sur le blog et que la valeur du jour restait affichĂ©e Ă 0, pour un visiteur cela ressemblait simplement Ă quelque chose de cassĂ©.
Les noms des mĂ©triques prĂȘtaient aussi Ă confusion. Les utilisateurs actifs et les vues de page sont des valeurs diffĂ©rentes. Si je dĂ©finis le nombre de visiteurs de façon stricte, le chiffre paraĂźt trop conservateur. Si jâutilise les vues de page, la sensation est plus naturelle, mais il faut faire attention au libellĂ©.
Au final, le jugement était simple.
Utiliser GA comme valeur de rĂ©fĂ©rence historique, et compter moi-mĂȘme les augmentations Ă partir de maintenant.
Jâai sĂ©parĂ© la base de rĂ©fĂ©rence et lâincrĂ©ment
La structure finale a pris cette forme.
Vues publiques = base GA + incrément Cloudflare D1
La base GA correspond au nombre dĂ©jĂ accumulĂ©. Je choisis une date de rĂ©fĂ©rence et jâenregistre les vues totales du site ainsi que les vues par article jusquâĂ ce moment-lĂ .
à partir de là , le Cloudflare Worker compte directement. Quand un visiteur entre sur le blog, JavaScript appelle le Worker, et le Worker enregistre dans D1 les incréments du jour, du mois, du total et de chaque chemin de page.
En résumé, cela donne ceci.
Valeurs cumulées existantes : base Google Analytics
Nouvel incrément : Cloudflare Worker + D1
API publique : Cloudflare Worker
Affichage du blog : inclusion Jekyll + JavaScript
Jâai aimĂ© cette mĂ©thode parce quâelle ne jette aucun des deux cĂŽtĂ©s.
Elle conserve les donnĂ©es existantes de GA. En mĂȘme temps, les comptages futurs rĂ©agissent immĂ©diatement sur lâĂ©cran du blog.
Pourquoi Cloudflare Worker et D1
Firebase faisait aussi partie des candidats. Mais pour une fonctionnalité de cette taille, le cÎté Cloudflare était plus simple.
GitHub Pages est un site statique, il nây a donc aucun endroit oĂč placer du code serveur. Worker comble ce vide avec une petite piĂšce. D1 est basĂ© sur SQLite, ce qui suffit pour stocker des nombres simples comme ceux dâun compteur de visites.
La condition de coĂ»t convenait aussi. Un compteur de visites pour un blog personnel peut ĂȘtre gĂ©rĂ© dans la limite de lâoffre gratuite. Si beaucoup de monde arrive soudainement, une partie du comptage peut devenir lĂ©gĂšrement imprĂ©cise, mais les articles eux-mĂȘmes ne se cassent pas. Au dĂ©part, ce nâest ni un systĂšme de paiement ni un grand livre financier.
Ce que je voulais, ce nâĂ©tait pas une comptabilitĂ© exacte, mais montrer le flux dâun blog qui est en train dâĂȘtre lu.
Jâai limitĂ© les robots et les visites rĂ©pĂ©tĂ©es avec modĂ©ration
Quand on ajoute un compteur Ă une page publique, les robots peuvent aussi faire monter les chiffres.
Les bloquer parfaitement est difficile. Et si je bloque trop strictement, je mâĂ©loigne au contraire de la sensation de compteur que je voulais. Je prĂ©fĂ©rais une maniĂšre de compter un peu gĂ©nĂ©reuse, comme sur Naver Blog.
Le Worker ne traite donc que quelques points.
- Exclure les agents utilisateur qui sont clairement des robots.
- Ne pas recompter la mĂȘme combinaison visiteur et page pendant un certain dĂ©lai.
- Accumuler les vues par article de la mĂȘme maniĂšre, avec des incrĂ©ments basĂ©s sur le chemin.
Autrement dit, je lâai ajustĂ© pour un compteur de visites public, pas pour un outil dâanalyse strict.
Je lâai affichĂ© discrĂštement Ă lâĂ©cran
Au dĂ©but, jâai essayĂ© dâafficher les statistiques dans plusieurs cases. Mais lâinterface placĂ©e Ă cĂŽtĂ© du profil devait rester petite. Quand les chiffres deviennent trop nombreux, le premier Ă©cran du blog se salit plutĂŽt quâautre chose.
Jâai donc finalement gardĂ© trois valeurs.
Aujourd'hui / Mois / Total
Aujourd'hui donne la sensation que le blog est lu maintenant. Mois montre lâĂ©chelle rĂ©cente. Total montre le temps que le blog a accumulĂ©.
Dans les listes dâarticles, jâai ajoutĂ© un nombre de vues Ă chaque article.
10 vues
Cette valeur utilise aussi la mĂȘme structure que les statistiques globales.
Vues par article = base GA par article + incrément Cloudflare D1 par article
Par exemple, si un article avait 9 vues selon la base GA et quâil a Ă©tĂ© lu une fois de plus aprĂšs le passage au nouveau compteur, lâĂ©cran affiche 10 vues.
CâĂ©tait ce qui semblait le plus naturel. Les vues passĂ©es ne sont pas jetĂ©es, et les vues futures sâaccumulent immĂ©diatement.
Résultat
Au final, des chiffres comme ceux-ci sont apparus prĂšs du profil du blog.
Aujourd'hui 1 / Mois 66 / Total 4,944
Et les listes dâarticles affichent les vues sous cette forme.
10 vues
Si lâon regarde seulement la fonctionnalitĂ©, elle est petite. Mais jâaime beaucoup ce travail.
Le problĂšme Ă©tait clair. Un blog GitHub Pages nâavait pas de compteur de visites. GA existait, mais il ne suffisait pas comme compteur visible sur lâĂ©cran public. Pour autant, je ne voulais pas construire un gros serveur juste pour un seul blog.
Jâai donc conservĂ© les donnĂ©es existantes de GA comme base de rĂ©fĂ©rence, puis ajoutĂ© une structure qui compte directement seulement les incrĂ©ments suivants avec Cloudflare Worker et D1.
Les avantages du blog statique sont restĂ©s tels quels. JâĂ©cris en Markdown, je dĂ©ploie avec GitHub Pages, et le coĂ»t de maintenance reste presque nul. En Ă©change, jâai posĂ© une petite piĂšce sans serveur uniquement sur la partie exacte qui manquait.
Si plus tard je dois prĂ©senter ce blog comme un portfolio, ce genre de travail sera peut-ĂȘtre justement facile Ă expliquer. Ce nâest pas une fonctionnalitĂ© grandiose, mais elle est partie dâune gĂȘne rĂ©elle, elle a limitĂ© le coĂ»t et la complexitĂ©, et elle a Ă©tĂ© menĂ©e jusquâĂ une forme exploitable.
Laisser un commentaire