perf: servir les statiques par nginx, et dire ce que le bot n a pas livre
PERF-006. Le bloc location /static/ etait commente : 59 Ko de CSS et de JS
passaient par Waitress a chaque page. L activer tel quel aurait ete une
regression : ces URL ne changent jamais, donc un cache de 30 jours sert une
feuille de style vieille d un mois apres chaque deploiement, sans moyen de
l invalider. url_for('static') estampille maintenant chaque URL du mtime du
fichier ; c est ce qui rend le immutable vrai et pas seulement rapide.
Deux pieges nginx consignes dans le fichier : un add_header dans un location
annule tous les add_header herites du server (nosniff disparaissait du
JavaScript), et un statique manquant doit renvoyer 404 plutot que retomber
sur Flask, sinon un deploiement casse se cache derriere une page qui marche.
PERF-005. Les objets utilisateur Discord sont mis en cache. A etre precis
sur le gain : un envoi coute deux appels reseau, resoudre puis envoyer, et
seul le premier est economise — un premier match a vingt joueurs fait
toujours vingt resolutions. Ce qui est gagne l est entre notifications, la
ou le bot ecrit aux memes personnes soir apres soir.
Chaque message dit desormais ce qu il est devenu, avec le destinataire et
la raison. Les trois echecs ne se ressemblent pas et ne se lisent plus
pareil : une boite fermee est definitive et ne se retente pas, une erreur
HTTP est passagere, un identifiant sans proprietaire est un compte a
corriger. Le lot quotidien annonce son propre deficit.
Piege trouve en ecrivant les tests : configure_logging met propagate=False
sur le logger 'app', et le handler de caplog est sur la racine. Les
assertions sur les journaux passaient seules et echouaient dans la suite
complete, ou une application avait deja ete construite — elles lisaient un
journal vide, pas un bot silencieux.
417 tests.
This commit is contained in:
+22
-3
@@ -64,11 +64,30 @@ BACKUP_RETENTION_DAYS=30
|
||||
|
||||
## Step 3: Configure Nginx
|
||||
|
||||
1. Copy `nginx.conf` to your Nginx installation directory (e.g., `C:\nginx\conf\`)
|
||||
2. Place SSL certificate files:
|
||||
1. Copy `app/nginx.conf` to your Nginx installation directory (e.g., `C:\nginx\conf\`)
|
||||
2. **Edit the `alias` in the `location /static/` block** to point at this
|
||||
checkout's `app/static/` directory — absolute path, forward slashes, keep
|
||||
the trailing slash. It ships as `C:/team-tryouts/app/static/`, which is a
|
||||
guess about your machine. Nginx resolves a relative path against its own
|
||||
install prefix, not against `nginx.conf`.
|
||||
3. Place SSL certificate files:
|
||||
- `C:\nginx\certs\fullchain.pem`
|
||||
- `C:\nginx\certs\privkey.pem`
|
||||
3. Start Nginx: `C:\nginx\nginx.exe`
|
||||
4. Check the configuration parses before restarting: `C:\nginx\nginx.exe -t`
|
||||
5. Start Nginx: `C:\nginx\nginx.exe`
|
||||
|
||||
Nginx serves `/static/` from disk with a 30-day `immutable` cache. That is
|
||||
only safe because `url_for('static', …)` appends `?v=<mtime>` to every static
|
||||
URL (`version_static_urls` in `app/app.py`), so a redeployed file is requested
|
||||
under a new URL. If that stamp is ever removed, remove the cache headers with
|
||||
it or visitors keep a month-old stylesheet.
|
||||
|
||||
After a deploy, confirm the stamp changed rather than trusting it:
|
||||
|
||||
```powershell
|
||||
# The v= value must differ from the one served before the deploy.
|
||||
(Invoke-WebRequest https://your-domain/auth/login).Content -match 'style\.css\?v=(\d+)'
|
||||
```
|
||||
|
||||
### Obtaining SSL Certificates
|
||||
|
||||
|
||||
Reference in New Issue
Block a user