3.9 KiB
Le truc, c’est 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 (1–5 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 d’aller-retour maison pour le “bruit” de l’UI, 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 c’est ç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
- QoS/shaper à la maison (cap à ~45 Mb/s + fq_codel/cake) → stabilité immédiate.
- Edge cache au VPS pour Odoo + assets Nextcloud → réduction du trafic répétitif.
- 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 l’inverse). 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 n’actives 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.