2 पॉइंट द्वारा GN⁺ 2025-11-04 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • व्यक्तिगत सर्वर पर 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 टिप्पणियां

 
ndrgrd 2025-11-04

यह बस धीमा है। सिर्फ client ही धीमा नहीं है, server भी धीमा है.
8745HS machine पर कुछ सौ PDF thumbnails बनाने में कई घंटे लग जाते हैं और फिर भी काम खत्म नहीं होता।
कोई भी दूसरा file server चलाना बेहतर है। अगर client Windows है तो SMB, बाकी के लिए rclone या dufs के साथ WebDAV server इस्तेमाल करना ज़्यादा बेहतर लगा।

 
yeorinhieut 2025-11-05

copyparty काफ़ी अच्छा है

 
GN⁺ 2025-11-04
Hacker News राय
  • मैं Nextcloud को पसंद करना चाहता हूँ। मुझे लगता है कि इसका होना ही बड़ी बात है
    लेकिन ऊपर-ऊपर से ठीक चलने के बाद भी कभी-कभी यह पूरी तरह टूट जाता है और ऐसी त्रुटियाँ आती हैं जिनसे उबरना संभव नहीं होता
    मैंने iOS/Android ऐप से परिवार की फ़ोटो का ऑटो-बैकअप करने की कोशिश की, लेकिन iOS ऐप में कभी-कभी “locked webdav” त्रुटि आती है या sync रुक जाता है
    नतीजा यह होता है कि 80GB फ़ोटो फिर से शुरू से upload करनी पड़ती हैं
    परिवार के उपयोग के लिए यह बहुत अस्थिर है, इसलिए कोई भरोसेमंद विकल्प चाहिए। वास्तव में iCloud के अलावा लगभग कोई विकल्प नहीं है

    • iOS ऐप में बैकग्राउंड में account connection टूट जाने से मेरा डेटा खो चुका है
      Files ऐप integration से paste किया था, लेकिन sync नहीं हुआ और बिना किसी चेतावनी के डेटा गायब हो गया
    • हाल में लोगों ने बनाया हुआ एक बहुत हल्का विकल्प copyparty है
      copyparty GitHub — इसमें सिर्फ़ ज़रूरी फीचर हैं, बेकार का भारीपन नहीं
    • फ़ोटो बैकअप के लिए Immich कहीं बेहतर अनुभव देता है
      लेकिन Dropbox replacement के रूप में अब भी कोई अच्छा विकल्प नहीं है
    • फ़ोटो के मामले में Immich सबसे अच्छा है
    • मैंने mobile upload के लिए FolderSync पर स्विच किया, और यह पूरी तरह सही काम करता है
      official ऐप में bug बहुत हैं, लेकिन server side स्थिर है
  • Nextcloud बहुत ज़्यादा JavaScript calls की वजह से धीमा है
    calendar page refresh करने पर 124 network calls होती हैं, जिनमें से 31 cache भी नहीं होतीं
    हर calendar पर 30ms से ज़्यादा लगता है, इसलिए calendar जितने ज़्यादा हों, latency उतनी जमा होती जाती है
    local network पर भी 1 सेकंड लगता है, और 4G पर 33 सेकंड से ज़्यादा। डिज़ाइन ही अक्षम है

    • JS files बहुत ज़्यादा हैं, और AJAX requests भी बहुत ज़्यादा हैं
      ऐसी REST-आधारित संरचना mobile network पर round-trip latency बढ़ा देती है, इसलिए धीमी होना तय है
      मुझे लगता है कि अब REST की जगह WebSocket इस्तेमाल करने का समय है
    • पहले Nextcloud calendar वाकई शानदार था, लेकिन redesign के बाद पूरी तरह बिगड़ गया
      event जोड़ना या बदलना असुविधाजनक हो गया है और UI भी बचकाना लगने लगा है। इस्तेमाल लायक open source web calendar नहीं है
    • ऐसी समस्याओं को हल करने के लिए data sync protocol में सुधार होना चाहिए
      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 को बनाए रखती है

    • मैं भी सहमत हूँ। Nextcloud modularization के जाल में फँस गया है
      हर फीचर एक अलग plugin के रूप में शुरू हुआ, इसलिए उनमें एकीकृतपन नहीं है
      अब यह एक राक्षसी ढांचा बन गया है, और मुझे लगता है कि कई tools को SSO से जोड़ना इससे बेहतर है
    • जानना चाहूँगा कि क्या आपने वे patches साझा किए थे। अगर speed improvement इतनी बड़ी है, तो community के लिए मददगार होगा
      और सच कहें तो Nextcloud चलाना इतना कठिन भी नहीं है। एक बार setup हो जाए तो maintenance आसान है
  • मुझे लगता है कि लेख में कही गई JS size से ज़्यादा अक्षम logic इसकी धीमी गति का कारण है
    बहुत ज़्यादा API calls और UI updates ही असली समस्या हैं

    • JS बहुत ज़्यादा हो तो parsing, execution, DOM manipulation जैसी चीज़ों में cumulative overhead बहुत बढ़ जाता है
      पहले 200KB से ऊपर जाते ही optimization review करते थे, लेकिन Nextcloud तो 15MB का है
    • वजह caching का ठीक से काम न करना, या अनावश्यक preloading भी हो सकती है
  • मैं 7 साल से Nextcloud का इस्तेमाल परिवार की फ़ोटो backup के लिए कर रहा हूँ
    privacy अच्छी है और यह स्थिर भी है, लेकिन Google Docs replacement के रूप में मैं इसे कभी recommend नहीं करूँगा
    बड़े uploads और thumbnail loading अस्थिर और धीमे हैं
    फिर भी कोई विकल्प नहीं है, और मैं अपना डेटा किसी बड़ी कंपनी की AI को नहीं सौंपना चाहता
    काश परिवार वाले इसे और सक्रिय रूप से इस्तेमाल करते

    • सोच रहा हूँ क्या Immich वह विकल्प बन सकता है। सुना है कि यह फ़ोटो और वीडियो management में मज़बूत है
  • मैंने कई self-hosted file managers इस्तेमाल किए हैं
    Ajaxplorer → Pydio → Nextcloud → FileRun के क्रम में इस्तेमाल किया, और FileRun सबसे संतोषजनक रहा
    यह तेज़, स्थिर है और mobile browser में भी अच्छी तरह काम करता है
    अब यह paid है, लेकिन कीमत वाजिब है
    copyparty भी हल्का और तेज़ है, लेकिन सामान्य users के लिए अनुकूल नहीं है
    FileRun का “file request” फीचर याद आता है

    • मुझे filebrowser पसंद है। Syncthing के साथ इस्तेमाल करें तो यह mini Dropbox जैसा बन जाता है
      filebrowser GitHub
      filebrowser-docker
    • copyparty में भी “shares(--shr)” फीचर से ऐसा ही upload link बनाया जा सकता है
      demo link
    • copyparty सिर्फ़ one-way sync सपोर्ट करता है, इसलिए Nextcloud replacement के रूप में यह मुश्किल है
      Syncthing के साथ मिलाकर देखने की सोच रहा हूँ, लेकिन CPU load की चिंता है
  • Nextcloud धीमा और भारी है, लेकिन स्थिर है
    8 लोगों की एक कंपनी में इसे कई सालों से बिना समस्या के इस्तेमाल किया जा रहा है
    webapp धीमा है इसलिए लगभग इस्तेमाल नहीं करते, ज़्यादातर desktop sync client का उपयोग करते हैं
    IMAP authentication plugin बहुत उपयोगी है, इसलिए user management आसान हो जाता है

    • लोग कहते हैं webapp धीमा है, लेकिन webapp के अपने फायदे भी बहुत हैं
      uBlock, userstyle, userscript वगैरह से इसे मनचाहे ढंग से customize किया जा सकता है
  • मैंने पहले Nextcloud के PDF viewer vulnerability खोजकर report की थी
    समस्या यह थी कि इसमें पुराना JS-आधारित PDF viewer शामिल था, और 16 साल की उम्र में मुझे इसके लिए $100 मिले थे
    मेरी ब्लॉग पोस्ट

    • मैंने भी ऐप के भीतर PDF को div में दिखाने की कोशिश की थी, लेकिन आखिर में pdf.js ही इस्तेमाल करना पड़ा
  • 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 होना चाहिए

    • language बदलने से speed में बहुत बड़ा सुधार नहीं होगा
      असली समस्या अक्षम I/O structure और ढेर सारी XHR calls हैं
      PHP की accessibility community contributions के लिए फायदेमंद है
    • जानकारी के लिए, Owncloud Infinite Scale Go में दोबारा लिखा गया version है
      official docs — हालांकि इसमें Docker dependency ज़्यादा है और environment constraints भी काफ़ी हैं