Liebe Entwickler,
die tomedo.app benötigt relativ lange, um Updates von unserem tomedo-Server zu laden.
(knapp 1,5 Minuten trotz Gigabit-Netzwerk).
Da das deutlich unter dem maximal möglichen Datendurchsatz liegt, habe ich dieses Phänomen untersucht und eine Optimierung entdeckt:
Mit deaktivierter HTTP-Kompression kann tomedo das Update 5 mal schneller herunterladen!
Vermutlich würden sich sehr viele Kunden freuen, wenn man ein derartiges "Turbo-Update" über eine tomedo-Einstellung ein- oder ausschalten könnte (falls ja, dann bitte diesen Beitrag liken!).
Hier die technische Erläuterung für Nerds...
Die tomedo.app erfragt beim Update eine komprimierte Übertragung mittels HTTP-Header "Accept-Encoding: gzip,deflate":
GET /tomedo_live/filebyname/serverinternal/tomedo.app.tar HTTP/1.1
Host: tomedo.radiologie-lippstadt.de:8080
Content-Type: application/json
x-api-key: tomedo
Accept: */*
clientId: mac81 04:9D:05:17:E5:5C /Users/radiologie/Library
Accept-Language: de-DE,de;q=0.9
User-Agent: tomedo/629a6e8a55 CFNetwork/1498.700.2 Darwin/23.6.0
Accept-Encoding: gzip, deflate
Connection: keep-alive
Worauf der tomedo-Server auch eine komprimierte Datei liefert:
HTTP/1.1 200
clientId: mac81 04:9D:05:17:E5:5C /Users/radiologie/Library
Content-Disposition: attachment; filename=tomedo.app.tar
vary: accept-encoding
Content-Encoding: gzip
Content-Type: multipart/mixed
Transfer-Encoding: chunked
Date: Thu, 16 Jan 2025 07:42:49 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Wenn ich diese Anfrage im Terminal rekonstruiere, erhalte ich einen Datendurchsatz, der mit dem Durchsatz der tomedo.app vergleichbar ist (1 Minute 22 Sekunden):
$ curl -H "Accept-Encoding: gzip" -O http://tomedo:8080/tomedo_live/filebyname/serverinternal/tomedo.app.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 589M 0 589M 0 0 7332k 0 --:--:-- 0:01:22 --:--:-- 4790k
Schalte ich nun die Kompression über den HTTP-Header "Accept-Encoding: identity" ab, dann wird der Download deutlich beschleunigt (nur noch 15 Sekunden), obwohl die unkomprimierte Datei 2,5 mal größer ist:
$ curl -H "Accept-Encoding: identity" -O http://tomedo:8080/tomedo_live/filebyname/serverinternal/tomedo.app.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1529M 0 1529M 0 0 99.5M 0 --:--:-- 0:00:15 --:--:-- 103M
Auch ohne "Accept-Encoding"-Header findet ein schneller Download statt.
(siehe Accept-Encoding)
Der Flaschenhals ist also scheinbar der Kompressionsvorgang des Servers, nicht die Geschwindigkeit des Netzwerkes.
Sogar wenn man tomedo vom offiziellen Demo-Server aus dem Internet läd, ist der unkomprimierte Download deutlich schneller:
$ curl -O -H "Accept-Encoding: gzip" http://allgemeinmedizin.demo.tomedo.org:8080/tomedo_live/filebyname/serverinternal/tomedo.app.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 586M 0 586M 0 0 13.9M 0 --:--:-- 0:00:41 --:--:-- 9801k
$ curl -O -H "Accept-Encoding: identity" http://allgemeinmedizin.demo.tomedo.org:8080/tomedo_live/filebyname/serverinternal/tomedo.app.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1567M 0 1567M 0 0 61.7M 0 --:--:-- 0:00:25 --:--:-- 61.3M
Viele Grüße
Björn Albers