Aller au contenu
Acecore

Ajouter des commentaires à un blog Astro avec Cloudflare uniquement

by Gui
Sommaire
Ajouter des commentaires à un blog Astro avec Cloudflare uniquement

Ajouter des commentaires à un site statique revient à ajouter de l’état.

Pour Acecore, nous n’avons pas utilisé de service externe de commentaires. Dans PR #101, la fonctionnalité reste entièrement sur Cloudflare.

  • Astro affiche l’interface.
  • Cloudflare Pages Functions expose /api/comments.
  • Cloudflare D1 stocke les commentaires.
  • Cloudflare Turnstile protège les envois.
  • wrangler.jsonc sépare preview et production.

Le point fort est clair : la zone de commentaires n’est pas un îlot tiers dans la page.

Architecture

CoucheFichier ou service
UIsrc/components/BlogComments.astro
Placementsrc/views/BlogPostPage.astro
APIfunctions/api/comments.ts
StockageBinding D1 COMMENTS_DB
ProtectionCloudflare Turnstile
Schémamigrations/0001_create_blog_comments.sql

L’interface lit avec GET /api/comments?slug=...&locale=... et publie avec POST /api/comments.

La Function valide origin, payload, Turnstile, limites, doublons et contenu bloqué avant insertion.

Pourquoi D1

Les commentaires demandent des requêtes simples mais relationnelles : filtrer par article, trier par date, masquer avec deleted_at, limiter par client et détecter les doublons.

D1 permet de le faire en SQL. Les lignes visibles sont celles où deleted_at IS NULL.

Les requêtes passent par des prepared statements et bind(), sans concaténer les entrées utilisateur dans le SQL.

Wrangler comme contrat

Le binding COMMENTS_DB est défini dans wrangler.jsonc. Preview pointe vers acecore-comments-preview; production vers acecore-comments-production.

C’est important : une preview de Pull Request ne doit pas écrire dans la base de production.

La documentation Cloudflare Pages indique aussi que la configuration Wrangler devient la source de vérité du projet Pages.

Turnstile côté serveur

Le widget visible dans le navigateur ne suffit pas.

Le token est envoyé à la Pages Function, puis validé via Cloudflare Siteverify avec TURNSTILE_SECRET_KEY.

Le hostname retourné est également vérifié pour éviter d’accepter un token émis depuis un domaine inattendu.

Anti-spam

La première version est stricte :

  • pas d’URL
  • pas d’adresse e-mail
  • pas de HTML
  • pas de lien Markdown
  • pas de répétitions excessives
  • pas de termes promotionnels courants
  • champ honeypot

Le rate limit existe en mémoire et dans D1. Le client est identifié par un hash salé, pas par une IP brute stockée telle quelle.

SEO

Les commentaires sont chargés côté client et la section utilise data-pagefind-ignore. Ils ne sont pas indexés comme contenu principal.

Pour un blog d’entreprise, c’est un choix sain : l’article est éditorial, les commentaires sont interactifs.

Résumé

Un service externe de commentaires est pratique, mais pas obligatoire.

Avec Cloudflare Pages, Pages Functions, D1, Turnstile et Wrangler suffisent pour une fonctionnalité légère et maîtrisée.

Références

Questions fréquentes
Pourquoi ne pas utiliser un widget externe ?
Parce que l'UI, les données, les scripts, la modération et la migration dépendent alors du service. Ici, tout reste dans le site et Cloudflare.
D1 suffit-il pour des commentaires ?
Pour lire par post_slug, trier par date, masquer avec deleted_at, limiter par client et détecter les doublons, D1 convient bien.
Turnstile côté client suffit-il ?
Non. La Pages Function doit vérifier le token avec Siteverify avant d'écrire dans D1.

Commentaires

Chargement des commentaires...

Les liens, e-mails et textes promotionnels ne peuvent pas être publiés.

G

Gui

PDG d'Acecore. Pilote les systèmes métier, le web, les bases de données et l'infrastructure, la qualité et l'adoption de l'IA, du cadrage des enjeux métier à la conception, au déploiement et à l'amélioration continue. S'appuie sur une capacité pratique en C#/.NET tout en couvrant aussi PHP/JavaScript, SQL Server/PostgreSQL/MySQL et Linux/Windows Server, afin de concevoir les besoins, les choix technologiques, les standards de qualité et les opérations de développement basées sur GitHub comme un flux cohérent. Intègre l'IA générative aux processus de développement, de vérification et d'organisation de l'information, comme une base pratique pour aider les petites équipes à livrer plus vite et plus sûrement.

Cadrage des enjeux métierChoix technologiquesConception de systèmesC#/.NETConception bases de données/infrastructureOpérations de développement GitHubIA générativeConception de flux IAConception de la qualitéIntégration terrain

Envie d'en savoir plus sur nos services ?

Nous offrons un accompagnement complet : développement de systèmes, design web, design graphique et éducation IT.

Articles connexes

Rechercher des articles