چگونه حذف Next.js از یک وبلاگ باعث شد امتیاز لایتهاوس به ۱۰۰ برسد — Removing Next.js Got My Blog to 100 on Every Lighthouse Category
خلاصه
این مقاله تجربیات یک توسعهدهنده را در حذف فریمورک Next.js و مهاجرت به Hono برای رسیدن به امتیاز کامل ۱۰۰ در تمام دستههای لایتهاوس بررسی میکند. این مطلب نشان میدهد که ران تایم جاوا اسکریپت و کدهای استفادهنشده در صفحات استاتیک چگونه عملکرد را تحت تأثیر قرار میدهند.
مقدمه و زمینه
برای بسیاری از توسعهدهندگان، ساخت یک وبلاگ شخصی سریع، سبک و بهینهسازیشده یک چالش جذاب است. پلتفرمهای موجود مانند Medium یا Blogger با ویژگیهای اضافی سنگین شدهاند و ابزارهایی مثل WordPress نیز مشکلات مربوط به افزونهها را دارند. توسعهدهنده این پروژه تصمیم گرفت وبلاگ شخصی خود را با نام bloffy.co راهاندازی کند. او در ابتدا از Next.js (نسخه ۱۶.۱.۶) که یکی از محبوبترین فریمورکهای اکوسیستم React است استفاده کرد، اما با وجود بهینهسازیهای مختلف، موفق نشد امتیاز ۱۰۰ کامل را در تمام بخشهای ابزار Lighthouse کسب کند.
چرا Next.js برای صفحات استاتیک کم آورد؟
پس از بررسی دقیق نتایج لایتهاوس، مشخص شد که مشکل اصلی کدهای جاوا اسکریپت قدیمی و حجیمی است که توسط فریمورک بارگذاری میشوند. حتی زمانی که تمامی کامپوننتها به Server Components تبدیل شدند و هیچ تعامل سمت کلاینتی وجود نداشت، Next.js همچنان ران تایم خود، پکیجهای روتر (RSC Payload) و کدهای مربوط به hydration را به مرورگر کاربر ارسال میکند. اجزایی مانند next/link و next/image ذاتاً به صورت کامپوننتهای کلاینتی کار میکنند و این موضوع باعث تزریق کدهای جاوا اسکریپت اضافی به صفحات استاتیکی میشود که عملاً نیازی به جاوا اسکریپت ندارند.
مهاجرت به Hono
نویسنده پس از چالشهای فراوان تصمیم گرفت Next.js را کاملاً کنار بگذارد. او به دنبال راهکاری بود که هم بهرهوری فریمورک را حفظ کند و هم از بار اضافی جلوگیری کند. انتخاب نهایی Hono بود؛ فریمورکی که به خاطر فلسفه طراحی سریع، ساده و پشتیبانی از JSX توجه او را جلب کرد.
- حذف کامل جاوا اسکریپت غیرضروری: حجم کدهای استفادهنشده به شدت کاهش یافت و به مقدار ناچیز ۴۰۷ بایت رسید.
- بهبود چشمگیر سرعت: مدت زمان اجرای کدهای اولیه قبل از رندر شدن صفحه در Next.js حدود ۳۰۹ میلیثانیه بود که در نسخه بازنویسیشده با Hono به حدود ۶۸ میلیثانیه کاهش یافت (حدود ۷۸ درصد بهبود).
- کاهش زمان بیلد: زمان ساخت (Build Time) پروژه نیز حدود ۴۰ درصد سریعتر شد.
چرا این موضوع برای مهندسان نرمافزار اهمیت دارد؟
این تجربه یادآور یک نکته مهم معماری است: همه پروژهها به فریمورکهای سنگین نیاز ندارند. در حالی که Next.js ابزاری فوقالعاده برای وباپلیکیشنهای پیچیده و تعاملی (مثل پنلهای مدیریت) است، تحمیل ران تایم آن روی صفحات کاملاً استاتیک و محتوانحو توجیهپذیری فنی ندارد. در بحثهای Hacker News نیز کاربران به بررسی گزینههای جایگزین برای سایتهای استاتیک (Static Site Generators) پرداختند و این مقاله نشان میدهد که انتخاب ابزار باید دقیقاً متناسب با نیاز واقعی پروژه انجام شود.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل