100 lines
3.9 KiB
Markdown
100 lines
3.9 KiB
Markdown
|
|
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
|
|||
|
|
|
|||
|
|
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 l’inverse). 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 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.
|