- व्यक्तिगत सर्वर पर Nextcloud को optimize करने के बाद भी उसकी धीमी responsiveness का कारण ज़रूरत से ज़्यादा JavaScript loading वाली संरचना है
- शुरुआती page load पर 15~20MB JavaScript डाउनलोड होती है, और compress होने के बाद भी 4~5MB के स्तर पर बनी रहती है, जो अब भी बहुत भारी है
core-common.js(4.71MB), NotificationsApp.chunk.mjs(1.06MB), Calendar app 5.94MB, Files app 18.8MB, Notes app 20.91MB आदि, हर app की script size बहुत बड़ी है
- इस संरचना के कारण iPhone 13 mini पर भी Tasks app चलने में 5~10 सेकंड की देरी होती है
- कुछ फीचर Vikunja(1.5MB JS) और Immich जैसी सेवाओं से बदले गए, लेकिन Nextcloud की integrated functionality की वजह से इसे पूरी तरह replace करना मुश्किल है
Nextcloud के performance गिरने का कारण
- Nextcloud files, calendar, contacts, notes, tasks, photos जैसी कई सुविधाएँ एक साथ देता है, लेकिन उपयोग के दौरान महसूस होने वाली गति धीमी है
- पर्याप्त hardware performance वाले माहौल में भी response धीमा रहता है
- developer tools के analysis के अनुसार, देरी का मुख्य कारण JavaScript की अत्यधिक मात्रा है
- शुरुआती page load पर 15~20MB JavaScript डाउनलोड होती है
- compressed transfer के बाद भी यह 4~5MB के स्तर पर रहती है, जो सामान्य web app मानक(1MB) से बहुत बड़ी है
- browser cache होने पर भी, हर visit पर बहुत सारा code execute करना पड़ता है, जिससे loading delay होता है
मुख्य JavaScript bundle size
core-common.js : 4.71MB, जो कई apps में common functionality देता है
NotificationsApp.chunk.mjs : 1.06MB
- Calendar app: सिर्फ basic calendar view के लिए भी 5.94MB चाहिए
- धीमे network माहौल में 30 सेकंड से ज़्यादा loading delay हो सकता है
- Files app:
EditorOutline(1.77MB), previewUtils(1.17MB), index(1.09MB), emoji-picker(0.9MB) आदि कई scripts शामिल हैं
- कुल 18.8MB के साथ, वास्तविक माहौल में 1 मिनट से ज़्यादा loading का इंतज़ार करना पड़ सकता है
- Notes app: सिर्फ
notes-main.js ही 4.36MB है, और कुल आकार 20.91MB तक पहुँचता है
user experience पर असर
- Tasks app चलाने पर भी 5~10 सेकंड की देरी होती है
- उदाहरण: दुकान में shopping list खोलने पर वह तुरंत नहीं दिखती
- फीचर के मुकाबले bundle size का अनुपात असामान्य रूप से बड़ा है, जिससे functionality और performance के बीच असंतुलन पैदा होता है
- Nextcloud की संरचना में common libraries और tools बहुत हैं, इसलिए integrated experience देने की कीमत performance गिरावट के रूप में चुकानी पड़ती है
वैकल्पिक सेवाओं का उपयोग
- कुछ फीचर Vikunja(task management, 1.5MB JS) और Immich(photo management) में अलग चलाए जा रहे हैं
- Vikunja परिपूर्ण नहीं है, लेकिन JS size छोटा होने की वजह से महसूस होने वाली गति बेहतर है
- लेकिन Nextcloud की integration और convenience के कारण इसे पूरी तरह बदलना मुश्किल है
निष्कर्ष और सोच में बदलाव
- Nextcloud की मौजूदा संरचना के पीछे वाजिब कारण या manpower की कमी जैसी वास्तविक सीमाएँ हो सकती हैं
- फिर भी, user experience और accessibility में गिरावट एक स्पष्ट समस्या के रूप में सामने आती है
- web performance विशेषज्ञ Alex Russell के लेख के ज़रिए web performance के महत्व और development teams की performance·accessibility प्रबंधन में लापरवाही की समस्या को समझा गया
- web app development में performance inequality की समस्या पर विचार किया जाना चाहिए
3 टिप्पणियां
यह बस धीमा है। सिर्फ client ही धीमा नहीं है, server भी धीमा है.
8745HS machine पर कुछ सौ PDF thumbnails बनाने में कई घंटे लग जाते हैं और फिर भी काम खत्म नहीं होता।
कोई भी दूसरा file server चलाना बेहतर है। अगर client Windows है तो SMB, बाकी के लिए rclone या dufs के साथ WebDAV server इस्तेमाल करना ज़्यादा बेहतर लगा।
copyparty काफ़ी अच्छा है
Hacker News राय
मैं Nextcloud को पसंद करना चाहता हूँ। मुझे लगता है कि इसका होना ही बड़ी बात है
लेकिन ऊपर-ऊपर से ठीक चलने के बाद भी कभी-कभी यह पूरी तरह टूट जाता है और ऐसी त्रुटियाँ आती हैं जिनसे उबरना संभव नहीं होता
मैंने iOS/Android ऐप से परिवार की फ़ोटो का ऑटो-बैकअप करने की कोशिश की, लेकिन iOS ऐप में कभी-कभी “locked webdav” त्रुटि आती है या sync रुक जाता है
नतीजा यह होता है कि 80GB फ़ोटो फिर से शुरू से upload करनी पड़ती हैं
परिवार के उपयोग के लिए यह बहुत अस्थिर है, इसलिए कोई भरोसेमंद विकल्प चाहिए। वास्तव में iCloud के अलावा लगभग कोई विकल्प नहीं है
Files ऐप integration से paste किया था, लेकिन sync नहीं हुआ और बिना किसी चेतावनी के डेटा गायब हो गया
copyparty GitHub — इसमें सिर्फ़ ज़रूरी फीचर हैं, बेकार का भारीपन नहीं
लेकिन Dropbox replacement के रूप में अब भी कोई अच्छा विकल्प नहीं है
official ऐप में bug बहुत हैं, लेकिन server side स्थिर है
Nextcloud बहुत ज़्यादा JavaScript calls की वजह से धीमा है
calendar page refresh करने पर 124 network calls होती हैं, जिनमें से 31 cache भी नहीं होतीं
हर calendar पर 30ms से ज़्यादा लगता है, इसलिए calendar जितने ज़्यादा हों, latency उतनी जमा होती जाती है
local network पर भी 1 सेकंड लगता है, और 4G पर 33 सेकंड से ज़्यादा। डिज़ाइन ही अक्षम है
ऐसी REST-आधारित संरचना mobile network पर round-trip latency बढ़ा देती है, इसलिए धीमी होना तय है
मुझे लगता है कि अब REST की जगह WebSocket इस्तेमाल करने का समय है
event जोड़ना या बदलना असुविधाजनक हो गया है और UI भी बचकाना लगने लगा है। इस्तेमाल लायक open source web calendar नहीं है
Electric SQL जैसा approach दिलचस्प है
और TC39 import proposal जैसे JS improvements भी मदद कर सकते हैं
मैं पहले Nextcloud का एक soft fork maintain करता था, लेकिन इसकी बुनियादी संरचना बहुत जटिल है
performance improvement के कुछ patch लगाने भर से file manager rendering कई गुना तेज़ हो गई थी
लेकिन codebase layers के ऊपर layers चढ़ी हुई संरचना जैसा है, इसलिए उस पर भरोसा करना मुश्किल है
आखिरकार मैंने project छोड़ दिया। लगता है ऐसी जटिलता ही hosting provider ecosystem को बनाए रखती है
हर फीचर एक अलग plugin के रूप में शुरू हुआ, इसलिए उनमें एकीकृतपन नहीं है
अब यह एक राक्षसी ढांचा बन गया है, और मुझे लगता है कि कई tools को SSO से जोड़ना इससे बेहतर है
और सच कहें तो Nextcloud चलाना इतना कठिन भी नहीं है। एक बार setup हो जाए तो maintenance आसान है
मुझे लगता है कि लेख में कही गई JS size से ज़्यादा अक्षम logic इसकी धीमी गति का कारण है
बहुत ज़्यादा API calls और UI updates ही असली समस्या हैं
पहले 200KB से ऊपर जाते ही optimization review करते थे, लेकिन Nextcloud तो 15MB का है
मैं 7 साल से Nextcloud का इस्तेमाल परिवार की फ़ोटो backup के लिए कर रहा हूँ
privacy अच्छी है और यह स्थिर भी है, लेकिन Google Docs replacement के रूप में मैं इसे कभी recommend नहीं करूँगा
बड़े uploads और thumbnail loading अस्थिर और धीमे हैं
फिर भी कोई विकल्प नहीं है, और मैं अपना डेटा किसी बड़ी कंपनी की AI को नहीं सौंपना चाहता
काश परिवार वाले इसे और सक्रिय रूप से इस्तेमाल करते
मैंने कई self-hosted file managers इस्तेमाल किए हैं
Ajaxplorer → Pydio → Nextcloud → FileRun के क्रम में इस्तेमाल किया, और FileRun सबसे संतोषजनक रहा
यह तेज़, स्थिर है और mobile browser में भी अच्छी तरह काम करता है
अब यह paid है, लेकिन कीमत वाजिब है
copyparty भी हल्का और तेज़ है, लेकिन सामान्य users के लिए अनुकूल नहीं है
FileRun का “file request” फीचर याद आता है
filebrowser GitHub
filebrowser-docker
demo link
Syncthing के साथ मिलाकर देखने की सोच रहा हूँ, लेकिन CPU load की चिंता है
Nextcloud धीमा और भारी है, लेकिन स्थिर है
8 लोगों की एक कंपनी में इसे कई सालों से बिना समस्या के इस्तेमाल किया जा रहा है
webapp धीमा है इसलिए लगभग इस्तेमाल नहीं करते, ज़्यादातर desktop sync client का उपयोग करते हैं
IMAP authentication plugin बहुत उपयोगी है, इसलिए user management आसान हो जाता है
uBlock, userstyle, userscript वगैरह से इसे मनचाहे ढंग से customize किया जा सकता है
मैंने पहले Nextcloud के PDF viewer vulnerability खोजकर report की थी
समस्या यह थी कि इसमें पुराना JS-आधारित PDF viewer शामिल था, और 16 साल की उम्र में मुझे इसके लिए $100 मिले थे
मेरी ब्लॉग पोस्ट
open source projects को लेकर शिकायतें बहुत हैं, लेकिन खुद सुधार करने वाले लोग कम हैं
मैं Nextcloud से प्यार करता हूँ। यह धीमा है, फिर भी मेरा डेटा मेरे नियंत्रण में रहता है, और AGPL code होने की वजह से इसे बदला भी जा सकता है
इसे मुफ्त में इस्तेमाल किया जा सकता है, और extensions को लगभग “shopping” की तरह जोड़ा जा सकता है
6 साल से ज़्यादा समय से बिना किसी बड़ी समस्या के इस्तेमाल कर रहा हूँ, और यह आज़ादी वाकई शानदार है
यह परफेक्ट नहीं है, लेकिन इसका होना ही आभारी होने लायक है
Nextcloud की ताकत यह है कि एक ही platform पर पूरे collaboration tools संभाले जा सकते हैं
files, calendar, notes, office, photos, Talk आदि का integrated experience देता है
AIO package ने updates और stability से जुड़ी कई समस्याएँ हल की हैं
लेकिन PHP-आधारित होने की वजह से performance कमज़ोर है, और UI को Synology DSM की तरह और polished होना चाहिए
असली समस्या अक्षम I/O structure और ढेर सारी XHR calls हैं
PHP की accessibility community contributions के लिए फायदेमंद है
official docs — हालांकि इसमें Docker dependency ज़्यादा है और environment constraints भी काफ़ी हैं