4 पॉइंट द्वारा GN⁺ 2024-03-26 | 1 टिप्पणियां | WhatsApp पर शेयर करें

jampack क्या है?

  • jampack न तो कोई bundler है, न framework, बल्कि एक post-processing tool है जो static site generator (SSG) के output को optimize करके user experience और Core Web Vitals स्कोर को बेहतर बनाता है।

jampack क्या कर सकता है?

  • <img> टैग की images को responsive में बदला जाता है ताकि वे अलग-अलग resolutions को support करें, और loading="lazy" तथा decoding="async" attributes जोड़े जाते हैं जिससे performance बेहतर होती है।
  • <picture> टैग का उपयोग करके images को ऐसे responsive images में बदला जाता है जिनमें कई formats शामिल हो सकते हैं, और AVIF format भी support होता है।
  • CDN images को responsive में बदला जाता है, ताकि अलग-अलग resolutions की images srcset के जरिए दी जा सकें।
  • external images को download करके optimize किया जा सकता है, और optimized image files को _jampack folder में store किया जाता है।
  • जो images तुरंत स्क्रीन पर दिखती हैं (above-the-fold), उन्हें high priority के साथ load किया जाता है, और जो images नीचे scroll करने पर दिखती हैं (below-the-fold), उन्हें lazy loading के साथ load किया जाता है।

Inline critical CSS

  • stylesheet के download और parse होने के दौरान होने वाले FOUC (Flash of Unstyled Content) को रोकने के लिए, jampack critical CSS को inline करता है और बाकी CSS को lazy load करता है।

Link prefetching

  • पेज के भीतर मौजूद links को पहले से fetch करके भविष्य के page navigation की speed बेहतर की जाती है। quicklink की मदद से viewport में आने वाले links को dynamically prefetch किया जा सकता है।

सभी assets का compression

  • jampack दूसरे pass में उन सभी untouched assets को compress करता है और वही नाम व format बनाए रखता है। अलग-अलग file extensions के लिए अलग compression tools का उपयोग किया जाता है।

और भी बहुत कुछ!

  • jampack npx @divriots/jampack ./dist कमांड के जरिए dist folder के भीतर की static website को optimize कर सकता है।

jampack के उपयोग के उदाहरण

  • ‹div›RIOTS की वेबसाइट, keycloak.ch, bayjs.org जैसी कई websites में jampack का उपयोग किया जा रहा है।

jampack नाम की उत्पत्ति

  • jam: Jamstack से लिया गया है।
  • pack: 90 के दशक के executable packers की याद दिलाता है।

लाइसेंस

  • यह software MIT license की शर्तों के तहत जारी किया गया है।

GN⁺ की राय

  • jampack web performance optimization में गहरी रुचि रखने वाले शुरुआती software engineers के लिए एक उपयोगी tool हो सकता है। खास तौर पर उन developers के लिए यह मददगार लग सकता है जो Core Web Vitals जैसे performance metrics को महत्वपूर्ण मानते हैं।
  • यह tool सिर्फ image optimization ही नहीं, बल्कि CSS और JavaScript compression जैसी कई web optimization features भी देता है, जिससे page load time कम हो सकता है और user experience बेहतर हो सकता है।
  • आलोचनात्मक नज़रिए से देखें तो jampack जैसे tools का उपयोग वेबसाइट की complexity बढ़ा सकता है, और गलत इस्तेमाल होने पर उल्टा performance issues भी पैदा कर सकता है। इसलिए इस tool का उपयोग करने से पहले पर्याप्त testing और review जरूरी है।
  • web performance optimization के लिए पहले से ही कई tools मौजूद हैं, जैसे Google का Lighthouse या WebPageTest। इन tools के साथ jampack का उपयोग करके वेबसाइट की performance का अधिक समग्र विश्लेषण और सुधार किया जा सकता है।
  • jampack अपनाते समय वेबसाइट की संरचना और उपयोग किए जा रहे tech stack को ध्यान में रखकर optimization strategy बनानी चाहिए। साथ ही, open source tools के उपयोग से community support मिलने का फायदा होता है, लेकिन project की continuity और maintenance की जिम्मेदारी पर भी विचार करना चाहिए।

1 टिप्पणियां

 
GN⁺ 2024-03-26
Hacker News टिप्पणियाँ
  • इस उपयोगकर्ता ने कहा कि उन्हें वही मिल गया जिसकी वे तलाश कर रहे थे। वे पहले Sharp का इस्तेमाल करके अपनी स्क्रिप्ट से image optimization कर रहे थे, लेकिन Jampack इस्तेमाल करने के बाद उसकी ज़रूरत नहीं रही। Quarto static site बनाने के बाद Jampack चलाने पर folder size 32% कम हो गया, और अभी तक कोई स्पष्ट कमी नज़र नहीं आई। उन्होंने PageSpeed Insights का उपयोग करके Jampack इस्तेमाल करने से पहले और बाद के performance metrics भी साझा किए।

    • मोबाइल performance metrics
      • Jampack इस्तेमाल से पहले: performance 52, accessibility 73, best practices 100, SEO 85
      • Jampack इस्तेमाल के बाद: performance 49, accessibility 80, best practices 100, SEO 92
    • डेस्कटॉप performance metrics
      • Jampack इस्तेमाल से पहले: performance 90, accessibility 75, best practices 100, SEO 82
      • Jampack इस्तेमाल के बाद: performance 85, accessibility 82, best practices 100, SEO 91
  • एक अन्य उपयोगकर्ता ने कहा कि यह फीचर उन्हें Apache और Nginx के लिए PageSpeed module की याद दिलाता है।

  • एक उपयोगकर्ता ने कहा कि उन्हें Jampack पसंद आया और वे इसे इस्तेमाल करना चाहेंगे, लेकिन उन्होंने पूछा कि आलोचनात्मक नज़र रखने वाले लोग इसमें किस तरह की कमियाँ बता सकते हैं। उनका मानना है कि Jampack कुछ वैसा ही काम करता है जैसे C code को optimized assembly में compile करना, यानी ऐसे काम जिन्हें वे खुद व्यक्तिगत रूप से नहीं करना चाहेंगे।

  • एक और उपयोगकर्ता ने कहा कि उन्हें "critical" CSS की पहचान कर उसे inline करने का विचार दिलचस्प लगा। वे उम्मीद कर रहे थे कि non-critical CSS की पहचान करने का कोई सैद्धांतिक तरीका होगा, लेकिन इस्तेमाल की गई library शायद page render करके यह अनुमान लगाने की कोशिश करती है कि कौन से rules महत्वपूर्ण हैं।

  • एक उपयोगकर्ता ने कहा कि वे यह देखना चाहेंगे कि SSG output के Unicode range के आधार पर fonts को आंशिक रूप से चुना जाए, और CSS में परिभाषित font-feature-settings के अनुसार OpenType axes को fix किया जाए।

  • Jampack को बहुत शानदार मानने वाले एक उपयोगकर्ता ने पूछा कि क्या Node.js से डरने वाले लोगों के लिए usage को आसान बनाने हेतु Docker container बनाया जा सकता है।

  • एक उपयोगकर्ता, जो webpage layout से नफरत करते हैं और उसे सीखने से बचते हैं, हालांकि कभी-कभी करना पड़ता है, ने कहा कि Jampack बेहतरीन लग रहा है।

  • एक उपयोगकर्ता ने पूछा कि कौन से static site generators वास्तव में production environment में इस्तेमाल होते हैं। उनका मानना है कि ऐसे tools से output को और optimize किया जा सकता है। उदाहरण के लिए, वे पूरे दिन यह कोशिश करते रहे कि Divjoy React website को ऐसे साधारण HTML में बदला जाए जिसे S3 bucket से serve किया जा सके, लेकिन उन्हें कठिनाई हुई। उन्हें ऐसा tool चाहिए जो अपने-आप S3 bucket पर deploy कर दे और domain को point कर दे।

  • एक उपयोगकर्ता ने कहा कि Jampack ऐसा लगता है कि वह कई ऐसे use cases को cover करता है जिन्हें SSG और उसके plugins संभालने की कोशिश करते हैं। वे जानना चाहते हैं कि Astro या Eleventy चुनने के बजाय अलग post-build step को प्राथमिकता देने के क्या कारण हैं। इसमें fast rebuilds during development और image width declarations जैसी चीज़ें जोड़ने से पैदा होने वाले subtle bugs छूट जाने की संभावना के बीच trade-off हो सकता है।

  • एक उपयोगकर्ता ने उन लोगों का धन्यवाद किया जिन्होंने ईमेल से वास्तविक उदाहरण भेजे। उन्होंने कहा कि वे इस तरह के समर्थन के लिए बहुत आभारी हैं।