Hacker News 中文摘要

RSS订阅

为什么Nextcloud使用起来感觉缓慢 -- Why Nextcloud feels slow to use

文章摘要

Nextcloud运行缓慢的主要原因是加载了过多JavaScript代码,每次访问需下载15-20MB的JS文件(压缩后4-5MB),其中核心模块core-common.js就占4.71MB。尽管浏览器会缓存,但执行如此大量的代码仍会导致明显的延迟。

文章总结

标题:为什么Nextcloud使用起来感觉很慢

我真心喜欢Nextcloud提供的功能集——它能轻松整合文件、日历、联系人、笔记、待办清单、照片等多种服务。但无论我如何优化家庭服务器的资源配置,即便在中等偏上的硬件环境下,它的使用体验依然迟缓。通过开发者工具排查后,我发现了问题根源:JavaScript文件过大

首次加载时,用户需要下载约15-20MB的JavaScript(压缩后约4-5MB),这个体积远超我认为合理的1MB标准。虽然浏览器会缓存这些文件,但每次访问仍需执行全部代码,导致明显延迟。

具体来看: - 核心文件core-common.js达4.71MB,为各应用提供基础功能 - 日历应用:显示基础视图需加载5.94MB - 文件管理:包含多个大体积脚本,如1.77MB的编辑器组件、0.9MB的表情选择器(实际从未使用) - 笔记应用:基础编辑器需4.36MB的notes-main.js

在网速较慢时,这些资源导致: - 日历加载耗时30秒(14MB) - 文件管理等待1分钟(18.8MB) - 笔记界面加载20.91MB脚本后仍不完整

即便是iPhone 13 mini在5G网络下,打开待办应用也需要5-10秒,严重影响使用体验。这种问题可能源于Nextcloud的架构设计——虽然统一库能保证应用一致性,但最终实现的性能与功能体积比严重失衡。

目前我已将部分功能迁移至更轻量的替代方案: - 待办事项改用Vikunja(仅1.5MB JS) - 照片管理切换至Immich

但Nextcloud的集成优势仍让我保留其他功能。需要强调的是,这种性能问题并非开发者本意,团队过载是行业常态,但结果确实损害了用户体验。

最后推荐Alex Russell关于"性能不平等差距"的系列文章,这些内容深刻揭示了当前Web开发中对性能与可访问性的普遍忽视。

评论总结

Nextcloud评论总结

1. 功能臃肿与性能问题(主要批评点)

  • 观点:Nextcloud被普遍认为过于臃肿,运行缓慢,尤其是Web端和客户端体验差。
    • 引用:"Nextcloud does feel slow... it should do it lightly and simply" (bArray)
    • 引用:"124 network calls... over 50% of the work is in making asynchronous calls" (PaulKeeble)
  • 技术原因:过度依赖JavaScript、冗余数据库操作、分层代码结构未优化(dingdingdang提到"layers upon layers of encrusted code")。

2. 可靠性争议

  • 负面反馈:同步功能不稳定(如iOS照片备份失败)、客户端频繁崩溃(palata描述"locked WebDAV"问题)。
  • 正面反馈:部分用户认为其核心功能(如文件同步)稳定可靠,适合企业场景(bogwog称"rock solid with 8 users")。

3. 缺乏替代方案(中立观点)

  • 现状:尽管体验不佳,Nextcloud仍是少数开源自托管方案中功能全面的选择。
    • 引用:"the only thing that keeps me using it is there isn't any real selfhosted alternatives" (Yie1cho)
    • 引用:"better than... everything else I haven't found" (palata)
  • 尝试替代品:用户提及FileRun(闭源但高效)、Syncthing(轻量但功能单一)、Bewcloud+Immich组合等,但均存在局限性。

4. 开发者与生态评价

  • 肯定:维护活跃、未转向商业许可(tokarf赞赏"not paywalled")。
  • 批评:代码优化优先级低,过度依赖插件和中间件(如Redis),导致部署复杂(dingdingdang认为这是托管服务商获利的原因)。

5. 性能对比与优化建议

  • 横向对比:与Gmail/Jira等相比,JS体积未必更大(ivolimmen提到Jira页面达42MB),但异步调用效率低下是主因。
  • 改进方向:减少网络请求批次数、优化数据库访问(PaulKeeble建议)、重构核心代码(如OwnCloud尝试用Golang重写)。

关键引用保留:

  • 性能问题
    "Nextcloud feels sluggish... 124 network calls, 31 uncached" (PaulKeeble)
    "Android client is so broken" (Yie1cho)
  • 替代方案
    "FileRun is fast... worth the license" (RiverCrochet)
    "Syncthing otoh barely even has a web UI, so it's really fast" (internet_points)