- Selbst wenn Nextcloud auf einem privaten Server optimiert wird, liegt die Ursache für die träge Reaktion an der Struktur mit übermäßigem JavaScript-Laden
- Beim ersten Seitenaufruf werden 15–20 MB JavaScript heruntergeladen; selbst nach der Komprimierung sind es mit 4–5 MB immer noch deutlich zu viel
- Die Skriptgrößen der einzelnen Apps sind sehr groß, darunter
core-common.js (4,71 MB), NotificationsApp.chunk.mjs (1,06 MB), die Calendar-App mit 5,94 MB, die Files-App mit 18,8 MB und die Notes-App mit 20,91 MB
- Durch diese Struktur kommt es selbst auf einem iPhone 13 mini zu 5–10 Sekunden Verzögerung beim Start der Tasks-App
- Einige Funktionen wurden durch Vikunja (1,5 MB JS) und Immich ersetzt, doch wegen der integrierten Funktionen von Nextcloud ist ein vollständiger Ersatz schwierig
Ursachen für die Leistungsprobleme von Nextcloud
- Nextcloud bietet integriert zahlreiche Funktionen wie Dateien, Kalender, Kontakte, Notizen, Aufgaben und Fotos, aber die gefühlt erlebbare Geschwindigkeit ist langsam
- Selbst in Umgebungen mit ausreichend leistungsfähiger Hardware reagiert es träge
- Die Analyse mit Entwicklerwerkzeugen zeigt, dass die Hauptursache der Verzögerung die übermäßige Menge an JavaScript ist
- Beim ersten Seitenaufruf werden 15–20 MB JavaScript heruntergeladen
- Selbst komprimiert sind es noch 4–5 MB und damit deutlich mehr als bei typischen Web-Apps (1 MB)
- Selbst wenn ein Browser-Cache vorhanden ist, muss bei jedem Besuch eine große Menge Code ausgeführt werden, was zu Ladeverzögerungen führt
Größen der wichtigsten JavaScript-Bundles
core-common.js: 4,71 MB und stellt gemeinsame Funktionen für mehrere Apps bereit
NotificationsApp.chunk.mjs: 1,06 MB
- Calendar-App: Schon für die einfache Kalenderansicht werden 5,94 MB benötigt
- In langsamen Netzwerken kann das zu Ladeverzögerungen von mehr als 30 Sekunden führen
- Files-App: enthält zahlreiche Skripte wie
EditorOutline (1,77 MB), previewUtils (1,17 MB), index (1,09 MB) und emoji-picker (0,9 MB)
- Insgesamt 18,8 MB, was in realen Umgebungen zu mehr als einer Minute Wartezeit beim Laden führen kann
- Notes-App: Allein
notes-main.js ist 4,36 MB groß; insgesamt liegt die App bei 20,91 MB
Auswirkungen auf die Benutzererfahrung
- Auch beim Start der Tasks-App kommt es zu Verzögerungen von 5–10 Sekunden
- Beispiel: Beim Öffnen einer Einkaufsliste im Laden wird sie nicht sofort angezeigt
- Das Verhältnis zwischen Funktionsumfang und Bundle-Größe ist ungewöhnlich hoch, was zu einem Ungleichgewicht zwischen Funktionalität und Performance führt
- Aufgrund der Struktur von Nextcloud mit vielen gemeinsamen Bibliotheken und Werkzeugen kommt es als Preis für das integrierte Nutzungserlebnis zu Leistungseinbußen
Nutzung alternativer Dienste
- Einige Funktionen werden getrennt über Vikunja (Aufgabenverwaltung, 1,5 MB JS) und Immich (Fotoverwaltung) betrieben
- Vikunja ist nicht perfekt, bietet aber wegen des geringen JS-Umfangs eine spürbar bessere Geschwindigkeit
- Wegen der Integration und Bequemlichkeit von Nextcloud ist ein vollständiger Ersatz jedoch schwierig
Fazit und veränderte Wahrnehmung
- In der aktuellen Struktur von Nextcloud könnte es reale Einschränkungen geben, etwa nachvollziehbare Gründe oder Personalmangel
- Dennoch wird die Verschlechterung von Benutzererfahrung und Zugänglichkeit klar als Problem benannt
- Durch einen Artikel des Web-Performance-Experten Alex Russell wurde die Bedeutung von Web-Performance und das Problem einer nachlässigen Pflege von Performance und Barrierefreiheit durch Entwicklungsteams bewusst
- Bei der Entwicklung von Web-Apps sollte das Problem der performance inequality berücksichtigt werden
3 Kommentare
Es ist einfach langsam. Nicht nur der Client ist langsam, sondern auch der Server.
Auf einer 8745HS-Maschine dauert es Stunden, ein paar Hundert PDF-Thumbnails zu erzeugen, und selbst dann wird es nicht fertig.
Es ist besser, einfach irgendeinen anderen Fileserver zu betreiben. Wenn der Client Windows ist, dann SMB; für alles andere ist es besser, einen WebDAV-Server mit
rcloneoderdufszu nutzen.copyparty ist ziemlich gut.
Hacker-News-Kommentare
Ich würde Nextcloud gern mögen. Ich finde es schon beeindruckend, dass es überhaupt existiert.
Aber obwohl es oberflächlich gut zu funktionieren scheint, treten manchmal nicht wiederherstellbare Fehler auf, bei denen alles komplett kaputtgeht.
Ich wollte Familienfotos mit den iOS-/Android-Apps automatisch sichern, aber die iOS-App wirft gelegentlich einen „locked webdav“-Fehler oder die Synchronisierung bleibt einfach stehen.
Am Ende musste ich 80 GB Fotos noch einmal von vorn hochladen.
Für die Nutzung in der Familie ist das viel zu instabil, deshalb braucht es eine verlässliche Alternative. Praktisch gibt es außer iCloud keine wirkliche Alternative.
Ich habe etwas über die Integration in die Dateien-App eingefügt, aber es wurde nicht synchronisiert und die Daten waren ohne jede Warnung einfach weg.
copyparty GitHub — nur die nötigen Funktionen, ohne unnötigen Ballast.
Als Dropbox-Ersatz gibt es aber weiterhin nichts wirklich Passendes.
Die offizielle App hat viele Bugs, aber die Serverseite ist stabil.
Nextcloud ist langsam, weil es viel zu viele JavaScript-Aufrufe gibt.
Beim Neuladen der Kalenderseite entstehen 124 Netzwerkaufrufe, davon werden 31 nicht gecacht.
Jeder Kalender braucht mehr als 30 ms, sodass sich die Verzögerung mit der Anzahl der Kalender aufaddiert.
Selbst im lokalen Netzwerk dauert es 1 Sekunde, unter 4G mehr als 33 Sekunden. Das Design ist an sich schon ineffizient.
Solche REST-basierten Strukturen sind in Mobilfunknetzen zwangsläufig langsam, weil die Round-Trip-Latenz hoch ist.
Ich denke, inzwischen ist es an der Zeit, statt REST WebSocket zu verwenden.
Termine hinzufügen oder bearbeiten ist umständlich geworden und auch die UI wirkt kindisch. Es gibt keinen brauchbaren Open-Source-Webkalender.
Ein Ansatz wie Electric SQL ist interessant.
Auch JS-Verbesserungsvorschläge wie der TC39 import proposal könnten helfen.
Ich habe früher einen Soft Fork von Nextcloud gepflegt, aber die Grundstruktur ist viel zu komplex.
Schon mit ein paar Patches zur Performance lief das Rendern des Dateimanagers um ein Mehrfaches schneller.
Aber die Codebasis ist eine Struktur aus Schicht über Schicht, sodass man ihr schwer vertrauen kann.
Am Ende habe ich das Projekt aufgegeben. Diese Komplexität scheint mir auch ein Faktor zu sein, der das Ökosystem der Hosting-Anbieter am Leben hält.
Jede Funktion begann als eigenständiges Plugin, deshalb fehlt die Integration.
Inzwischen ist es ein einziges Monster geworden, und ich denke, es wäre besser, mehrere Tools per SSO zu verbinden.
Und tatsächlich ist der Betrieb von Nextcloud gar nicht so schwierig. Wenn es einmal eingerichtet ist, ist die Wartung einfach.
Ich denke, nicht die im Artikel erwähnte JS-Größe ist der Hauptgrund für die Langsamkeit, sondern eher ineffiziente Logik.
Das Problem sind die viel zu vielen API-Aufrufe und UI-Updates.
Früher haben wir schon ab 200 KB eine Optimierungsprüfung gemacht, bei Nextcloud sind es 15 MB.
Ich nutze Nextcloud seit 7 Jahren für das Backup von Familienfotos.
Datenschutz ist gut und es läuft stabil, aber als Google-Docs-Ersatz würde ich es absolut nicht empfehlen.
Große Uploads und das Laden von Vorschaubildern sind instabil und langsam.
Trotzdem gibt es keinen echten Ersatz, und ich möchte meine Daten keiner Big-Tech-KI anvertrauen.
Ich wünschte, meine Familie würde es aktiver nutzen.
Ich habe verschiedene selbstgehostete Dateimanager verwendet.
Ich bin über Ajaxplorer → Pydio → Nextcloud → FileRun gegangen, und mit FileRun war ich am zufriedensten.
Es ist schnell, stabil und funktioniert auch im mobilen Browser gut.
Inzwischen ist es kostenpflichtig, aber den Preis wert.
copyparty ist ebenfalls leichtgewichtig und schnell, aber nicht besonders benutzerfreundlich für normale Nutzer.
Die „Dateianfrage“-Funktion von FileRun vermisse ich.
filebrowser GitHub
filebrowser-docker
Demo-Link
Ich überlege, es mit Syncthing zu kombinieren, habe aber Bedenken wegen der CPU-Last.
Nextcloud ist langsam und aufgebläht, aber stabil.
In einer Firma mit 8 Personen läuft es seit Jahren ohne Probleme.
Die Web-App ist langsam, deshalb nutzen wir sie fast nie, stattdessen hauptsächlich den Desktop-Sync-Client.
Das IMAP-Authentifizierungs-Plugin ist sehr nützlich und macht die Benutzerverwaltung einfach.
Mit uBlock, userstyle, userscript usw. lässt sie sich frei anpassen.
Ich habe früher eine Sicherheitslücke im PDF-Viewer von Nextcloud gefunden und gemeldet.
Das Problem war, dass ein alter JS-basierter PDF-Viewer eingebunden war, und mit 16 habe ich dafür 100 US-Dollar bekommen.
Mein Blogbeitrag
Viele beschweren sich über Open-Source-Projekte, aber nur wenige versuchen, sie selbst zu verbessern.
Ich liebe Nextcloud. Es ist zwar langsam, aber meine Daten gehören mir, und weil es AGPL-Code ist, kann ich es auch ändern.
Man kann es kostenlos nutzen und Erweiterungen wie beim „Einkaufen“ hinzufügen.
Ich nutze es seit über 6 Jahren ohne größere Probleme, und diese Freiheit ist wirklich großartig.
Es ist nicht perfekt, aber ich bin dankbar, dass es dieses Projekt gibt.
Die Stärke von Nextcloud ist, dass es als eine Plattform das komplette Set an Kollaborationstools abdecken kann.
Dateien, Kalender, Notizen, Office, Fotos, Talk usw. bieten eine integrierte Erfahrung.
Das AIO-Paket hat viele Probleme bei Updates und Stabilität gelöst.
Allerdings leidet die Performance wegen der PHP-Basis, und die UI sollte eher wie Synology DSM ausgearbeitet sein.
Das Problem sind die ineffiziente I/O-Struktur und die vielen XHR-Aufrufe.
PHP ist leicht zugänglich, was Beiträge aus der Community erleichtert.
Offizielle Dokumentation — allerdings ist sie stark von Docker abhängig und hat viele Umgebungsbeschränkungen.