کند شده توسط منطقه – انجمن DEV

TLDR;
من فقط محصول خود Etalase را منتشر کردم که با Remix و Hono ساخته شده است. مشکل از سمت Remix است که در Vercel میزبانی شده است. برای Hono، من از Deno به عنوان موتور زمان اجرا استفاده می کنم و آن را در Deno Deploy همراه با پایگاه داده Supabase میزبانی می کنم.
وقتی به صفحه قبلی برمی گردم، صفحه ریمیکس من تقریباً 500 میلی ثانیه ارائه می شود. به عنوان مثال، از خانه به محصولات و سپس دوباره به خانه. به عنوان بازرسی من، مشکل از منطقه Vercel من است که در واشنگتن تنظیم شده است در حالی که Supabase و Deno من در سنگاپور تنظیم شده اند.
بنابراین، تنظیم منطقه برای هر پلتفرمی که استفاده می کنید در همان منطقه باید این مشکل را حل کند.
خرچنگ، چرا اینقدر آهسته؟
من از خودم می پرسم که چرا صفحه من پس از افزودن برخی تماس های API به عملکرد لودر کندتر می شود. تقریباً 500 میلیثانیه است. برای کاربران صفر بسیار کند است (در حال حاضر 😅). آیا این به این دلیل است که API من کند است؟ نه، من آن را تست کردم و آن را سریع!
آیا لودر من هنوز بهینه نشده است؟ بله، اینطور است، اما این پلتفرم هنوز کاربرانش صفر است. چنین درک زیبایی …
جاری شدن اشک از “من خوبم” وعده می دهد
با خودم گفتم: “خوبه! بیایید این را تنظیم کنیم.”
اول، من از Promise.all() API برای جمع آوری تمام وعده ها با هم استفاده می کنم. من فکر کردم لودر کند است زیرا وعده ها به طور متوالی اجرا می شوند. پس از انجام آن، نتیجه؟ چیزی را تغییر نمی دهد 🙂.
“چگونه این را پخش کنیم؟” من به معنای واقعی کلمه به خودم گفته ام.
Btw، Remix دارای قابلیت استریم برای استریم داده های شما به UI است. به محض اینکه اولین تکه داده شما توسط عملکرد لودر دریافت می شود، به UI جریان می یابد.
و بعد از انجام این کار 🥁🥁🥁…
همچنین چیزی را تغییر نمی دهد 🙂.
اجازه دهید غرق شدن قرعه کشی
برای تلاش کافی است، بیایید تجزیه و تحلیل کنیم.
ابتدا مشکل را تعریف می کنم. خیلی آرومه. انتظار من FAST است. من دو روش مختلف را امتحان کردم: Promise.all و Streaming و شکست خورد.
حالا بیایید چند سناریو بسازیم.
و روی مشکل تمرکز کنید.
من از fetch برای اتصال با API خود استفاده می کنم که وعده را برمی گرداند و آن را موازی می کنم Promise.all()
. از آنجایی که واکشی از ارتباط مبتنی بر HTTP استفاده می کند، این می تواند دو مشکل اصلی داشته باشد: زمان درخواست کند یا زمان پاسخ آهسته.
اما، بر اساس سناریوی بالا من هیچ مشکلی برای مرورگر و پستچی ندارم. پس چه اتفاقی می افتد؟ خوب، بیایید بفهمیم که واقعاً چه چیزی باعث می شود که ارتباطات مبتنی بر HTTP به خصوص در سمت شبکه کند شود، زیرا می دانم که اتصال من خوب است و داده های در حال انتقال کم است.
صبر کن. تاخیر؟ من فکر می کنم من مقداری از نور خدا را دارم 😭
میدونی؟ زمان پاسخ واقعی برای سرور شما است time (ms) = latency + server request or response times
. همانطور که به یاد دارم مشکل اصلی تاخیر، فاصله بین مشتری و خود سرور است.
باعث شد
صبر کنید 🤨 (100 برابر)…
گفتم: “منطقه پیش فرض عملکرد بدون سرور Vercel من چیست؟”
من بلافاصله تنظیمات Vercel Functions خود را برای بررسی منطقه باز می کنم. و می دانید، به طور پیش فرض “واشنگتن، دی سی، ایالات متحده آمریکا ( iad1 )” است.
📖 اینجا مرجع برای شماست
- پیکربندی مناطق برای توابع Vercel
- ریمیکس در Vercel
اشکال زدایی من سه ساعت طول کشید. با تشکر، btw 🙂.
جاری شدن اشک (دوباره، اما واقعا)
بعد از اینکه متوجه این مشکل شدم، عملکرد بدون سرور خود را به سنگاپور تغییر دادم و آن را اعمال کردم.
همچنین، دوباره بررسی میکنم که همه سرویسها در سنگاپور قرار دارند. و تست نهایی … “سریع” است. از این بابت خیلی خوشحالم و کمی استراحت می کنم تا یک قهوه درست کنم.
به طور خلاصه، اگر عملکرد Remix شما کند است، حتی اگر فکر میکنید در Vercel میزبانی نمیشود، فهرستی از بررسی را به شما میدهم.
- استفاده کنید
Promise.all()
. اگر کمکی نمی کند، استفاده کنید… - ریمیکس
Streaming
. یا حتی بدترین … - مشکل تأخیر سرویس گیرنده-سرور خود را بررسی کنید.
می بینمت!