alliance-boreale/docs/10-architecture/2026-01-29 - Cache OVH - NGINX.md
Dan Allaire 22e5954295
Some checks failed
CI / yaml-lint (push) Has been cancelled
CI / ssot-export (push) Has been cancelled
CI / tests (push) Has been cancelled
CI / docs (push) Has been cancelled
mini-refonte
2026-01-29 09:46:17 -05:00

100 lines
No EOL
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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” :
```nginx
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.