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

原始链接: https://ounapuu.ee/posts/2025/11/03/nextcloud-slow/

作者对Nextcloud的性能感到沮丧,尽管欣赏它的一体化功能(文件、日历、笔记等)。核心问题是过多的JavaScript——初始页面加载需要下载15-20MB,即使经过压缩。这严重影响了响应速度,即使在良好的硬件上也是如此,在移动设备上尤其缓慢。 “core-common.js”包和各个应用程序脚本(日历、文件、笔记)都加剧了这种臃肿,一些应用程序仅需基本功能就需要几兆字节的JavaScript。虽然缓存有所帮助,但巨大的体积仍然会影响执行时间。 因此,作者正在迁移一些功能——任务到Vikunja(一个更精简的1.5MB),照片到Immich——同时勉强保留Nextcloud的全面功能。他们将问题归因于Nextcloud的架构,并提倡更好的Web性能实践,引用了Alex Russell在这方面的工作。最终,这种性能差异导致了用户体验的下降。

## Nextcloud性能问题与替代方案 一篇Hacker News讨论集中在Nextcloud的 perceived 速度缓慢问题上,Nextcloud是一个自托管云解决方案。用户认为这是由于臃肿的Javascript包造成的,并质疑为什么该应用程序变得如此庞大,尽管人们希望拥有轻量级、简单的云服务。 对于那些寻求更精简选项的人,有几种替代方案被提出。**Seafile** 反复出现,被认为是强有力的竞争者,因其功能和缺乏臃肿而受到称赞,但其iOS应用程序受到批评。其他提到的选项包括 **Immich**(专门用于照片)、**bewcloud**、**Peergos**(具有端到端加密)、**Syncthing**(缺乏选择性同步)、**Resilio Sync** 和 **Copyparty**(速度快但用户体验差)。 一些用户提倡使用专门的单功能应用程序,例如 **Radicale** 用于日历,而不是一体化套件。尽管存在缺点,许多人承认Nextcloud作为大型、公开开发的项目的价值,并且在很大程度上避免了付费的企业功能。
相关文章

原文

Nextcloud. I really want to like it, but it’s making it really difficult.

I like what Nextcloud offers with its feature set and how easily it replaces a bunch of services under one roof (files, calendar, contacts, notes, to-do lists, photos etc.), but no matter how hard I try and how much I optimize its resources on my home server, it feels slow to use, even on hardware that is ranging from decent to good. Then I opened developer tools and found the culprit.

It’s the Javascript.

On a clean page load, you will be downloading about 15-20 MB of Javascript, which does compress down to about 4-5 MB in transit, but that is still a huge amount of Javascript. For context, I consider 1 MB of Javascript to be on the heavy side for a web page/app.

Yes, that Javascript will be cached in the browser for a while, but you will still be executing all of that on each visit to your Nextcloud instance, and that will take a long time due to the sheer amount of code your browser now has to execute on the page.

A significant contributor to this heft seems to be the core-common.js bundle, which based on its name seems to provide some common functionality that’s shared across different Nextcloud apps that one can install. It’s coming in at 4.71 MB at the time of writing.

Then you want notifications, right? NotificationsApp.chunk.mjs is here to cover you, at 1.06 MB.

Then there are the app-specific views. The Calendar app is taking up 5.94 MB to show a basic calendar view.

Nextcloud Calendar app Javascript assets.
Nextcloud Calendar app Javascript assets.
This is what 14 MB of Javascript gets you, after about 30 seconds of loading on a poor connection.
This is what 14 MB of Javascript gets you, after about 30 seconds of loading on a poor connection.

Files app includes a bunch of individual scripts, such as EditorOutline (1.77 MB), previewUtils (1.17 MB), index (1.09 MB), emoji-picker (0.9 MB which I’ve never used!) and many smaller ones.

Nextcloud Files app Javascript assets.
Nextcloud Files app Javascript assets.
This is what 18.8 MB of Javascript gets you. I waited for a whole minute for it to load in a real world poor internet
connectivity scenario.
This is what 18.8 MB of Javascript gets you. I waited for a whole minute for it to load in a real world poor internet connectivity scenario.

Notes app with its basic bare-bones editor? 4.36 MB for the notes-main.js!

Nextcloud Notes app Javascript assets. This isn't even half of it!
Nextcloud Notes app Javascript assets. This isn't even half of it!
20.91 MB of Javascript, for this?
20.91 MB of Javascript, for this?

This means that even on an iPhone 13 mini, opening the Tasks app (to-do list), will take a ridiculously long time. Imagine opening your shopping list at the store and having to wait 5-10 seconds before you see anything, even with a solid 5G connection. Sounds extremely annoying, right?

I suspect that a lot of this is due to how Nextcloud is architected. There’s bound to be some hefty common libraries and tools that allow app developers to provide a unified experience, but even then there is something seriously wrong with the end result, the functionality to bundle size ratio is way off.

As a result, I’ve started branching out some things from Nextcloud, such as replacing the Tasks app with using a private Vikunja instance, and Photos to a private Immich instance. Vikunja is not perfect, but its 1.5 MB of Javascript is an order of magnitude smaller compared to Nextcloud, making it feel incredibly fast in comparison.

However, with other functionality I have to admit that the convenience of Nextcloud is enough to dissuade me from replacing it elsewhere, due to the available feature set comparing well to alternatives.

For now.

I’m sure that there are some legitimate reasons behind the current state, and overworked development teams and volunteers are unfortunately the norm in the industry, but it doesn’t take away the fact that the user experience and accessibility suffers as a result.

I’d like to thank Alex Russell for writing about web performance and why it matters, with supporting evidence and actionable advice, it has changed how I view websites and web apps and has pushed me to be better in my own work. I highly suggest reading his content, starting with the performance inequality gap series. It’s educational, insightful and incredibly irritating once you learn how crap most things are and how careless a lot of development teams are towards performance and accessibility.

联系我们 contact @ memedata.com