100 lines
No EOL
3.9 KiB
Markdown
100 lines
No EOL
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. |