alliance-boreale/docs/architecture/2026-01-29 - Cache OVH - NGINX.md
Dan Allaire ef98fd8a3f Refonte
2026-03-09 18:23:06 -04:00

3.9 KiB
Raw Blame History

Le truc, cest de viser ce qui répète (assets), ce qui burst (pics), et ce qui sature (gros transferts).

1) Odoo “sites web” : là où tu peux gagner gros

Odoo sert beaucoup de contenu identique (assets, images, pièces jointes). Ça se cache très bien au VPS.

À faire au VPS (reverse-proxy cache)

  • Cache long pour les assets versionnés :
    • /web/assets/*
    • fichiers statiques thème/website
  • Cache prudent pour les médias/attachments :
    • /web/content/* (souvent images/documents publics)
  • Micro-cache (15 s) pour les pages publiques anonymes (anti-burst) : énorme ROI quand tu as des pics.

Même 5 secondes de micro-cache peut diviser tes hits backend par 10 sur un pic.

Réduire le poids

  • Activer gzip/brotli (au VPS) pour HTML/CSS/JS/JSON.
  • Forcer des images plus petites (WebP si ton pipeline le permet).
  • Vérifier que tes pages publiques ne tirent pas des méga-images “full-res”.

2) Nextcloud : gains réels, mais plus limités

Nextcloud est majoritairement auth + personnalisé + WebDAV ⇒ cache “full” non. Par contre :

Ce que tu peux cacher sans risque (au VPS)

  • Assets statiques Nextcloud (JS/CSS/fonts/images) : /core/, /apps/, /dist/, /themes/ (selon ton layout).
  • Résultat : moins daller-retour maison pour le “bruit” de lUI, surtout quand plusieurs utilisateurs se connectent.

Ce que tu optimises surtout autrement (pas via cache)

  • Limiter la concurrence et plafonner le bulk :
    • limiter le nombre de téléchargements simultanés
    • plafonner le débit par connexion (ou par IP)
  • Contrôler les partages publics (si cest ça qui mange ton upload) :
    • expiration des liens publics
    • limiter taille max / quotas
    • éviter “gros dépôt public” tant que tu es à 50 Mb/s

3) Le trio gagnant pour ton 50 Mb/s

  1. QoS/shaper à la maison (cap à ~45 Mb/s + fq_codel/cake) → stabilité immédiate.
  2. Edge cache au VPS pour Odoo + assets Nextcloud → réduction du trafic répétitif.
  3. Rate-limit / limites de transferts (au VPS et/ou à la maison) → un client ne te tue pas.

4) Exemple concret (Nginx cache au VPS) simple et safe

Tu peux garder HAProxy pour le routage, et mettre Nginx devant pour le cache (ou linverse). Exemple Nginx “edge cache” :

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=EDGE:200m max_size=30g inactive=7d use_temp_path=off;

map $http_cookie $has_cookie { default 1; "" 0; }
map $http_authorization $has_auth { default 1; "" 0; }

# Odoo - assets cacheables
location ^~ /web/assets/ {
  proxy_pass http://odoo_home;
  proxy_cache EDGE;
  proxy_cache_valid 200 7d;
  add_header X-Cache $upstream_cache_status always;
}

# Odoo - médias (à valider selon ton usage)
location ^~ /web/content/ {
  proxy_pass http://odoo_home;
  proxy_cache EDGE;
  proxy_cache_valid 200 1d;
  add_header X-Cache $upstream_cache_status always;
}

# Odoo - microcache pages publiques (GET sans cookies/auth)
location / {
  proxy_pass http://odoo_home;
  if ($request_method != GET) { set $skip 1; }
  if ($has_cookie = 1) { set $skip 1; }
  if ($has_auth = 1)   { set $skip 1; }

  proxy_cache EDGE;
  proxy_cache_bypass $skip;
  proxy_no_cache     $skip;
  proxy_cache_valid 200 2s;
  proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
  add_header X-Cache $upstream_cache_status always;
}

Même si tu nactives que /web/assets/ + micro-cache 2s sur pages publiques, tu vas le sentir.

5) La question qui détermine la meilleure optimisation (1 seule)

Ton upload est surtout mangé par :

  • visiteurs des sites Odoo (trafic web public), ou
  • transferts de fichiers Nextcloud (downloads/shares/sync) ?

Dis-moi “Odoo” ou “Nextcloud”, et je te donne le réglage prioritaire (cache/micro-cache vs plafonds/rate-limit) avec des valeurs concrètes adaptées à ton 50 Mb/s.