2 puntos por GN⁺ 2025-11-04 | 3 comentarios | Compartir por WhatsApp
  • Incluso al optimizar Nextcloud en un servidor personal, la causa de la lentitud en la respuesta es una estructura de carga excesiva de JavaScript
  • En la carga inicial de la página se descargan 15~20 MB de JavaScript y, aun comprimido, sigue siendo una carga pesada de 4~5 MB
  • El tamaño de los scripts por app es muy grande, como core-common.js (4.71MB), NotificationsApp.chunk.mjs (1.06MB), la app de Calendar con 5.94MB, la app de Files con 18.8MB y la app de Notes con 20.91MB
  • Debido a esta estructura, incluso en un iPhone 13 mini la app Tasks tarda entre 5 y 10 segundos en abrir
  • Algunas funciones se reemplazaron con Vikunja (1.5MB de JS) e Immich, pero por la integración de Nextcloud es difícil sustituirlo por completo

Causa de la degradación de rendimiento en Nextcloud

  • Nextcloud integra varias funciones como archivos, calendario, contactos, notas, tareas y fotos, pero la velocidad percibida por el usuario es baja
    • Incluso en entornos con hardware suficientemente potente, la respuesta sigue siendo lenta
  • Según el análisis con herramientas de desarrollo, la causa principal de la demora es la cantidad excesiva de JavaScript
    • En la carga inicial de la página se descargan 15~20 MB de JavaScript
    • Incluso tras la compresión, sigue en 4~5 MB, muy por encima de lo habitual en una web app común (1 MB)
  • Aunque exista caché del navegador, en cada visita es necesario ejecutar una gran cantidad de código, lo que provoca retrasos en la carga

Tamaño de los principales bundles de JavaScript

  • core-common.js: 4.71MB, ofrece funciones comunes para varias apps
  • NotificationsApp.chunk.mjs: 1.06MB
  • App de Calendar: requiere 5.94MB incluso solo para la vista básica del calendario
    • En redes lentas, puede generar demoras de más de 30 segundos
  • App de Files: incluye múltiples scripts como EditorOutline (1.77MB), previewUtils (1.17MB), index (1.09MB) y emoji-picker (0.9MB)
    • El total llega a 18.8MB y, en entornos reales, puede requerir más de 1 minuto de espera para cargar
  • App de Notes: solo notes-main.js pesa 4.36MB, y el total ronda los 20.91MB

Impacto en la experiencia del usuario

  • Incluso al abrir la app Tasks hay una demora de 5~10 segundos
    • Ejemplo: al abrir una lista de compras en una tienda, no aparece de inmediato
  • La proporción entre funcionalidad y tamaño del bundle es anormalmente alta, lo que genera un desequilibrio entre funciones y rendimiento
  • Por la propia estructura de Nextcloud, con muchas bibliotecas y herramientas compartidas, la experiencia integrada tiene como costo una caída en el rendimiento

Uso de servicios alternativos

  • Algunas funciones se operan por separado con Vikunja (gestión de tareas, 1.5MB de JS) e Immich (gestión de fotos)
    • Vikunja no es perfecto, pero como su tamaño de JS es pequeño, la velocidad percibida es mejor
  • Aun así, gracias a la integración y comodidad de Nextcloud, es difícil reemplazarlo por completo

Conclusión y cambio de percepción

  • La estructura actual de Nextcloud puede tener limitaciones reales, como razones válidas o falta de personal
  • Aun así, el deterioro de la experiencia de usuario y de la accesibilidad se señala claramente como un problema
  • A través de textos del especialista en rendimiento web Alex Russell, se tomó conciencia de la importancia del rendimiento web y del problema de la falta de cuidado del equipo de desarrollo en la gestión del rendimiento y la accesibilidad
  • Al desarrollar web apps, hay que considerar el problema de la desigualdad de rendimiento (performance inequality)

3 comentarios

 
ndrgrd 2025-11-04

Simplemente es lento. No solo el cliente es lento, el servidor también.
En una máquina 8745HS, crear miniaturas de varios cientos de PDF tarda horas y ni siquiera termina.
Es mejor usar cualquier otro servidor de archivos. Si el cliente es Windows, SMB; para lo demás, me resultó mejor usar un servidor WebDAV con rclone o dufs.

 
yeorinhieut 2025-11-05

copyparty está bastante bueno

 
GN⁺ 2025-11-04
Opiniones en Hacker News
  • Quiero que me guste Nextcloud. Me parece impresionante que exista
    Pero aunque por fuera parece funcionar bien, a veces se rompe por completo con errores irrecuperables
    Intenté usar la app de iOS/Android para respaldar automáticamente las fotos familiares, pero la app de iOS a veces da el error de “locked webdav” o simplemente deja de sincronizar
    Al final terminé teniendo que volver a subir 80 GB de fotos desde cero
    Es demasiado inestable para que lo use la familia, así que necesito una alternativa confiable. En la práctica no hay alternativa fuera de iCloud

    • La app de iOS una vez perdió la conexión de la cuenta en segundo plano y eso provocó pérdida de datos
      Pegué archivos usando la integración con la app Files, pero no se sincronizaron y los datos desaparecieron sin ninguna advertencia
    • Últimamente existe una alternativa ultraligera hecha por la comunidad llamada copyparty
      copyparty GitHub — tiene solo lo necesario y nada de peso innecesario
    • Para respaldo de fotos, Immich ofrece una experiencia mucho mejor
      Pero como reemplazo de Dropbox, todavía no hay nada realmente convincente
    • En lo relacionado con fotos, creo que Immich es lo mejor
    • Cambié las subidas móviles a FolderSync y funciona perfectamente
      La app oficial tiene muchos bugs, pero del lado del servidor es estable
  • Nextcloud es lento porque hace demasiadas llamadas de JavaScript
    Al recargar la página del calendario se generan 124 llamadas de red, y 31 de ellas ni siquiera se almacenan en caché
    Cada calendario tarda más de 30 ms, así que mientras más calendarios hay, más se acumula la latencia
    Incluso en red local tarda 1 segundo, y en 4G más de 33 segundos. El diseño en sí es ineficiente

    • Hay demasiados archivos JS y demasiadas solicitudes AJAX
      Este tipo de estructura basada en REST inevitablemente se vuelve lenta en redes móviles por la latencia de ida y vuelta
      Creo que ya es momento de usar WebSocket en lugar de REST
    • Antes el calendario de Nextcloud era realmente excelente, pero después del rediseño quedó totalmente arruinado
      Agregar o editar eventos se volvió incómodo y la UI se siente infantil. No hay un calendario web open source realmente usable
    • Para resolver este tipo de problemas, habría que mejorar el protocolo de sincronización de datos
      Un enfoque como Electric SQL se ve interesante
      Y mejoras de JS como TC39 import proposal también podrían ayudar
  • Antes mantuve un soft fork de Nextcloud, y la estructura base es demasiado compleja
    Con solo aplicar unos cuantos parches de rendimiento, la velocidad de renderizado del administrador de archivos mejoró varias veces
    Pero el codebase tiene una estructura de capas sobre capas, así que cuesta confiar en él
    Al final abandoné el proyecto. Creo que esta complejidad es parte de lo que mantiene vivo el ecosistema de proveedores de hosting

    • Pienso lo mismo. Nextcloud cayó en la trampa de la modularidad
      Cada función empezó como un plugin independiente y no hay integración real
      Ahora se convirtió en un monstruo, y casi que es mejor conectar varias herramientas con SSO
    • Me pregunto si compartiste esos parches. Si la mejora de velocidad fue tan grande, podrían ayudar a la comunidad
      Y en la práctica, operar Nextcloud tampoco es tan difícil. Una vez configurado, el mantenimiento es sencillo
  • Creo que más que el tamaño del JS que menciona el artículo, la causa de la lentitud es la lógica ineficiente
    El problema son demasiadas llamadas a la API y actualizaciones de UI

    • Cuando hay demasiado JS, se acumula mucho overhead en parsing, ejecución y manipulación del DOM
      Antes revisábamos optimización si pasaba de 200 KB, y Nextcloud llega a 15 MB
    • También podría deberse a un mal caché o a una precarga innecesaria
  • Llevo 7 años usando Nextcloud para respaldar fotos familiares
    Protege bien la privacidad y es estable, pero jamás lo recomendaría como reemplazo de Google Docs
    Las subidas grandes y la carga de miniaturas son inestables y lentas
    Aun así, no hay sustituto, y no quiero dejar mis datos en manos de la IA de las grandes tecnológicas
    Ojalá mi familia lo usara más activamente

    • Me pregunto si Immich podría ser esa alternativa. He oído que es muy fuerte para gestionar fotos y videos
  • He probado varios administradores de archivos self-hosted
    Pasé por Ajaxplorer → Pydio → Nextcloud → FileRun, y FileRun fue el que más me satisfizo
    Es rápido, estable y funciona bien incluso en el navegador móvil
    Ahora es de pago, pero vale la pena
    copyparty también es ligero y rápido, pero no es muy amigable para usuarios comunes
    Extraño la función de “solicitud de archivos” de FileRun

    • A mí me gusta filebrowser. Usado junto con Syncthing se vuelve como un mini Dropbox
      filebrowser GitHub
      filebrowser-docker
    • En copyparty también puedes crear enlaces de subida parecidos con la función “shares(--shr)”
      Enlace de demo
    • copyparty solo soporta sincronización unidireccional, así que es difícil reemplazar a Nextcloud
      Quiero probarlo junto con Syncthing, pero me preocupa la carga de CPU
  • Nextcloud es lento y pesado, pero estable
    Lo usamos desde hace años en una empresa de 8 personas sin problemas
    Casi no usamos la webapp porque es lenta, y nos apoyamos sobre todo en el cliente de sincronización de escritorio
    El plugin de autenticación IMAP es muy útil y facilita la administración de usuarios

    • Dicen que la webapp es lenta, pero también tiene muchas ventajas
      Se puede personalizar libremente con uBlock, userstyle, userscript, etc.
  • Antes descubrí y reporté una vulnerabilidad en el visor PDF de Nextcloud
    El problema era que incluían un visor PDF viejo basado en JS, y a los 16 años me pagaron $100
    Mi post del blog

    • Yo también intenté mostrar PDFs dentro de la app en un div, pero al final tuve que usar pdf.js
  • Mucha gente se queja de los proyectos open source, pero muy pocos intentan mejorarlos directamente
    Yo amo Nextcloud. Será lento, pero mis datos me pertenecen y además el código es AGPL, así que puedo modificarlo
    Se puede usar gratis y puedes ir agregando extensiones “como si compraras” funciones
    Llevo más de 6 años usándolo sin grandes problemas, y esa libertad me parece increíble
    No es perfecto, pero agradezco que exista

  • La gran ventaja de Nextcloud es que permite manejar todo el conjunto de herramientas de colaboración en una sola plataforma
    Ofrece una experiencia integrada con archivos, calendario, notas, oficina, fotos, Talk y más
    El paquete AIO resolvió muchos problemas de actualizaciones y estabilidad
    Aun así, al estar basado en PHP, el rendimiento cae, y ojalá la UI estuviera tan pulida como Synology DSM

    • Cambiar de lenguaje no mejoraría mucho la velocidad
      El problema es la estructura de I/O ineficiente y la enorme cantidad de llamadas XHR
      PHP tiene la ventaja de ser accesible para contribuir desde la comunidad
    • Como referencia, Owncloud Infinite Scale es una versión reescrita en Go
      Documentación oficial — aunque depende bastante de Docker y tiene bastantes limitaciones de entorno