Astro 5.3 | Astro

Astro 5.3 با رندر سریعتر صفحه، راهاندازی آسانتر برای جلسات آزمایشی و موارد دیگر اینجا است!
💘 این فصل عشق است و شما مطمئناً عاشق این پیشرفتهای Astro خواهید شد:
برای ارتقاء یک پروژه موجود، از خودکار استفاده کنید @astrojs/upgrade ابزار CLI. از طرف دیگر، می توانید با اجرای دستور ارتقاء برای مدیر بسته خود، به صورت دستی ارتقا دهید:
pnpm upgrade astro --latest
yarn upgrade astro --latest
رندر سریعتر صفحه
Astro استفاده از توابع ناهمزمان را در داخل کامپوننت ها آسان می کند، اما این قبلاً به این معنی بود که هر مؤلفه و صفحه به صورت ناهمزمان ارائه می شد، حتی اگر نیازی به این کار نباشد. وقتی این اتفاق برای هر مؤلفه روی صفحه میافتد، سربار این وعدهها واقعاً میتواند اضافه شود!
اکنون، به لطف مشارکت بزرگ جامعه از MatthewLymer در Fora، Astro فقط در صورتی اجزا را به صورت ناهمزمان رندر میکند که… (الف) منتظر آن باشید… آنها در واقع حاوی یک فراخوانی تابع ناهمزمان باشند.
در بنچمارک ها، این منجر به سرعت قابل توجهی در رندر مولفه های سنکرون شد. این برای ساختهای مبتنی بر تقاضا و استاتیک مفید است، اگرچه بزرگترین پیشرفتها در زمانهای پاسخ SSR دیده میشود. این حتی به صفحاتی که از توابع ناهمزمان استفاده میکنند کمک میکند، زیرا اکثر اجزای صفحه همچنان همگام خواهند بود.
میزان دقیق بهبود به هر سایت بستگی دارد. صفحات پیچیده با مؤلفههای زیاد بیشترین پیشرفتها را خواهند دید، در حالی که صفحاتی که در زمان درخواست از APIهای خارجی کندتر استفاده میکنند ممکن است بدون تغییر باقی بمانند. در آزمایش ما، پاسخهای SSR معمولاً 1.5 تا 2 برابر سریعتر هستند، مگر اینکه صفحه درخواستهایی را برای APIهای خارجی ارسال کند. چند نمونه:
برای بهره مندی از این پیشرفت لازم نیست کاری انجام دهید: فقط بنشینید و از زمان های رندر سریعتر لذت ببرید.
تنظیم ذخیره سازی جلسه خودکار
Astro 5.1 API ذخیره سازی جلسه آزمایشی را معرفی کرد که به توسعه دهندگان اجازه می دهد به راحتی جلسات کاربر را روی سرور مدیریت کنند. این ویژگی از دهها درایور مختلف ذخیرهسازی پشتیبان پشتیبانی میکند که توسط unstorage پشتیبانی میشوند.
قبلاً باید یک درایور فروشگاه جلسه را در خود پیکربندی میکردید astro.config.mjs، اما اکنون Astro هنگامی که از آداپتور پشتیبانی شده استفاده می کنید، به طور خودکار ذخیره سازی جلسه را برای شما تنظیم می کند.
ما با پشتیبانی شروع می کنیم @astrojs/node آداپتوری که از سیستم فایل برای ذخیره سازی و @astrojs/netlifyکه از Netlify Blobs استفاده می کند. امیدواریم در آینده نزدیک پشتیبانی از درایور پیشفرض را برای آداپتورهای بیشتری که پلتفرمهای میزبانی شامل APIهای ذخیرهسازی هستند اضافه کنیم. در هر صورت، اگر درایور ذخیرهسازی جلسه بهطور پیشفرض وجود نداشته باشد یا ترجیح میدهید از دیگری استفاده کنید، همچنان میتوانید به صورت دستی پیکربندی کنید.
اگر هنوز API ذخیرهسازی جلسه را آزمایش نکردهاید، میتوانید این ویژگی را با تنظیم فعال کنید experimental.session پرچم به true در مال شما astro.config.mjs:
اگر قبلاً از ویژگی جلسه استفاده می کنید، باید پیکربندی خود را برای نحو جدید با این تغییر مهم به روز کنید.
را experimental.session گزینه اکنون یک پرچم بولی است که می توانید تنظیم کنید true و از یک درایور ذخیره سازی جلسه پیش فرض با آداپتور پشتیبانی شده لذت ببرید، بدون نیاز به پیکربندی اضافی!
خود پیکربندی جلسه به سطح بالا منتقل شده است session کلید این به شما امکان می دهد یک درایور غیر پیش فرض و همچنین گزینه های دیگری مانند a را پیکربندی کنید base پیشوند یا انقضا ttl.
برای جزئیات بیشتر و مثالها، به مستندات جلسه آزمایشی مراجعه کنید.
کنترل بیشتر بر گروه بندی Netlify
هنگامی که Astro سایت شما را برای استقرار بر روی یک پلتفرم بدون سرور مانند Netlify یا Vercel میسازد، باید تمام فایلها و وابستگیهای مورد نیاز برای اجرای سایت شما را جمع کند. آداپتورهای Netlify و Vercel از یک کتابخانه برای این کار استفاده میکنند که معمولاً برای تعیین موارد مورد نیاز خوب است.
با این حال، همیشه این کار را به درستی انجام نمی دهد: گاهی اوقات فایلی را که به آن نیاز دارید از دست می دهد، به خصوص اگر یک فایل ثابت باشد که با توابع سیستم فایل بارگیری می کنید. مواقع دیگر شامل فایلهایی است که به آنها نیاز ندارید، که میتواند سرعت ساخت شما را کاهش دهد و حجم بسته شما را افزایش دهد، به خصوص اگر چیزی شبیه یک باینری بزرگ باشد.
برای مقابله با این، آداپتور Vercel قبلاً دارد excludeFiles و includeFiles گزینه هایی که به شما امکان می دهد فایل هایی را برای حذف یا گنجاندن در بسته مشخص کنید. با این نسخه، این گزینه ها در آداپتور Netlify نیز موجود است. هر دو گزینه آرایه ای از مسیرها یا کره ها را می پذیرند.
includeFiles: ["src/locales/**/*.po"],
excludeFiles: ["node_modules/big-package/chonky-file.bin"],
با تشکر از دنی فرناندز که به این ویژگی کمک کرد.
مدیریت بهبود یافته از HEAD درخواست ها
اکنون نقاط پایانی API به طور خودکار کنترل می شوند HEAD درخواست می کند اگر الف GET کنترل کننده تعریف شده است. Astro تماس خواهد گرفت GET کنترل کننده و پاسخ را با بدنه خالی برمی گرداند. اگر ترجیح می دهید رسیدگی کنید HEAD پرس و جوها متفاوت است، هنوز هم می توانید یک کنترل کننده جداگانه تعریف کنید. برای جزئیات بیشتر به اسناد نقاط پایانی API مراجعه کنید.
با تشکر از Vitalii Rybachenko از Netlify برای این مشارکت.
رفع اشکال
مثل همیشه ما سخت کار می کنیم تا مشکلات نسخه 5.2 را برطرف کنیم. برای جزئیات کامل تغییرات لاگ را ببینید.
متشکرم
از همه کسانی که در این نسخه مشارکت داشتند، از جمله امانوئل استاپا، سارا راینزبرگر، HiDeoo، Yan Thomas، Dani Fernández، unprintable123، Sean Boult، Armand Philippot، Vitalii Rybachenko، Cornelius Roemer و بسیاری دیگر سپاسگزاریم. تشکر اضافی از MatthewLymer برای کار عالی روی بهبودهای رندر سریعتر.
ما مشتاقانه منتظریم تا ببینیم چه چیزی با Astro 5.3 ایجاد می کنید! اگر سوالی دارید، نظری دارید یا فقط می خواهید سلام کنید، از Astro Discord دیدن کنید.




