Communitygithub.com

Stratégie de Mise en Cache (YepAPI/skills)

Mise en cache Redis, en-têtes de cache CDN, stale-while-revalidate, invalidation de cache, React Query.

Qu'est-ce que skills) ?

Cette compétence fournit une stratégie complète de mise en cache pour les applications web modernes, couvrant les couches navigateur, CDN, application (Redis) et base de données. Elle met l'accent sur l'utilisation de `stale-while-revalidate` pour servir rapidement un contenu légèrement obsolète tout en le rafraîchissant en arrière-plan, garantissant ainsi des performances optimales. Elle offre des directives détaillées pour configurer les en-têtes Cache-Control, implémenter la mise en cache Redis avec sérialisation JSON et TTL, et utiliser les bibliothèques React Query / TanStack Query avec les paramètres `staleTime` et `gcTime`. La compétence couvre également les modèles essentiels comme le cache-aside, l'invalidation à l'écriture, et l'invalidation basée sur les tags, avec des exemples de code concrets pour Redis et Next.js, tout en mettant en garde contre les pièges courants comme la mise en cache sans TTL ou le cache stampede.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/caching-strategy

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Stratégie de Mise en Cache

Règles

  • Mettez en cache à chaque couche : navigateur (Cache-Control), CDN (edge), application (Redis), base de données (cache de requêtes)
  • Utilisez stale-while-revalidate pour le contenu pouvant être légèrement obsolète — servez rapidement, rafraîchissez en arrière-plan
  • En-têtes Cache-Control : public, max-age=31536000, immutable pour les ressources statiques hachées ; public, s-maxage=60, stale-while-revalidate=300 pour les pages dynamiques
  • Mise en cache Redis : sérialiser en JSON, définir un TTL sur chaque clé, utiliser des clés avec espace de noms (cache:users:123)
  • React Query / TanStack Query : définir staleTime (combien de temps les données sont fraîches) et gcTime (combien de temps les conserver en mémoire)
  • Invalider à l'écriture — lorsque les données changent, supprimez ou mettez à jour immédiatement l'entrée du cache
  • Utilisez le modèle cache-aside : vérifiez d'abord le cache, récupérez depuis la source en cas d'échec, écrivez dans le cache
  • Pour Next.js : exploitez ISR (revalidate), unstable_cache, et le cache de fetch pour les composants serveur
  • Invalidation basée sur les tags : étiquetez les entrées mises en cache par type d'entité, invalidez toutes les entrées d'un tag lors d'une mutation

Modèles

// Cache-aside avec Redis
async function getCachedUser(id: string) {
  const cached = await redis.get(`user:${id}`);
  if (cached) return JSON.parse(cached);
  const user = await db.user.findUnique({ where: { id } });
  await redis.set(`user:${id}`, JSON.stringify(user), "EX", 3600);
  return user;
}

À Éviter

  • Mise en cache sans TTL — les données obsolètes persisteront indéfiniment
  • Mise en cache de données spécifiques à l'utilisateur dans un cache CDN partagé — utilisez les en-têtes private ou Vary
  • Cache stampede : utilisez le verrouillage ou stale-while-revalidate pour empêcher l'effet de troupeau
  • Mise en cache des réponses d'erreur — ne mettez en cache que les résultats réussis

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Skills associés