برنامه نویسی

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

TLDR;

من فقط محصول خود Etalase را منتشر کردم که با Remix و Hono ساخته شده است. مشکل از سمت Remix است که در Vercel میزبانی شده است. برای Hono، من از Deno به عنوان موتور زمان اجرا استفاده می کنم و آن را در Deno Deploy همراه با پایگاه داده Supabase میزبانی می کنم.

وقتی به صفحه قبلی برمی گردم، صفحه ریمیکس من تقریباً 500 میلی ثانیه ارائه می شود. به عنوان مثال، از خانه به محصولات و سپس دوباره به خانه. به عنوان بازرسی من، مشکل از منطقه Vercel من است که در واشنگتن تنظیم شده است در حالی که Supabase و Deno من در سنگاپور تنظیم شده اند.

بنابراین، تنظیم منطقه برای هر پلتفرمی که استفاده می کنید در همان منطقه باید این مشکل را حل کند.

خرچنگ، چرا اینقدر آهسته؟

من از خودم می پرسم که چرا صفحه من پس از افزودن برخی تماس های API به عملکرد لودر کندتر می شود. تقریباً 500 میلی‌ثانیه است. برای کاربران صفر بسیار کند است (در حال حاضر 😅). آیا این به این دلیل است که API من کند است؟ نه، من آن را تست کردم و آن را سریع!

IDK این چه میم است

آیا لودر من هنوز بهینه نشده است؟ بله، اینطور است، اما این پلتفرم هنوز کاربرانش صفر است. چنین درک زیبایی …

جاری شدن اشک از “من خوبم” وعده می دهد

با خودم گفتم: “خوبه! بیایید این را تنظیم کنیم.”

آره لعنتی

اول، من از Promise.all() API برای جمع آوری تمام وعده ها با هم استفاده می کنم. من فکر کردم لودر کند است زیرا وعده ها به طور متوالی اجرا می شوند. پس از انجام آن، نتیجه؟ چیزی را تغییر نمی دهد 🙂.

“چگونه این را پخش کنیم؟” من به معنای واقعی کلمه به خودم گفته ام.

Btw، Remix دارای قابلیت استریم برای استریم داده های شما به UI است. به محض اینکه اولین تکه داده شما توسط عملکرد لودر دریافت می شود، به UI جریان می یابد.

و بعد از انجام این کار 🥁🥁🥁…

همچنین چیزی را تغییر نمی دهد 🙂.

اجازه دهید غرق شدن قرعه کشی

برای تلاش کافی است، بیایید تجزیه و تحلیل کنیم.

سایه هاهاها

ابتدا مشکل را تعریف می کنم. خیلی آرومه. انتظار من FAST است. من دو روش مختلف را امتحان کردم: Promise.all و Streaming و شکست خورد.

حالا بیایید چند سناریو بسازیم.

سال

و روی مشکل تمرکز کنید.

zzz

من از fetch برای اتصال با API خود استفاده می کنم که وعده را برمی گرداند و آن را موازی می کنم Promise.all(). از آنجایی که واکشی از ارتباط مبتنی بر HTTP استفاده می کند، این می تواند دو مشکل اصلی داشته باشد: زمان درخواست کند یا زمان پاسخ آهسته.

http

اما، بر اساس سناریوی بالا من هیچ مشکلی برای مرورگر و پستچی ندارم. پس چه اتفاقی می افتد؟ خوب، بیایید بفهمیم که واقعاً چه چیزی باعث می شود که ارتباطات مبتنی بر HTTP به خصوص در سمت شبکه کند شود، زیرا می دانم که اتصال من خوب است و داده های در حال انتقال کم است.

adf

صبر کن. تاخیر؟ من فکر می کنم من مقداری از نور خدا را دارم 😭

میدونی؟ زمان پاسخ واقعی برای سرور شما است time (ms) = latency + server request or response times. همانطور که به یاد دارم مشکل اصلی تاخیر، فاصله بین مشتری و خود سرور است.

باعث شد

adfasdf

صبر کنید 🤨 (100 برابر)…

گفتم: “منطقه پیش فرض عملکرد بدون سرور Vercel من چیست؟”

من بلافاصله تنظیمات Vercel Functions خود را برای بررسی منطقه باز می کنم. و می دانید، به طور پیش فرض “واشنگتن، دی سی، ایالات متحده آمریکا ( iad1 )” است.

کلییو

📖 اینجا مرجع برای شماست

  1. پیکربندی مناطق برای توابع Vercel
  2. ریمیکس در Vercel

اشکال زدایی من سه ساعت طول کشید. با تشکر، btw 🙂.

جاری شدن اشک (دوباره، اما واقعا)

بعد از اینکه متوجه این مشکل شدم، عملکرد بدون سرور خود را به سنگاپور تغییر دادم و آن را اعمال کردم.

sihauiserh

همچنین، دوباره بررسی می‌کنم که همه سرویس‌ها در سنگاپور قرار دارند. و تست نهایی … “سریع” است. از این بابت خیلی خوشحالم و کمی استراحت می کنم تا یک قهوه درست کنم.

به طور خلاصه، اگر عملکرد Remix شما کند است، حتی اگر فکر می‌کنید در Vercel میزبانی نمی‌شود، فهرستی از بررسی را به شما می‌دهم.

  1. استفاده کنید Promise.all(). اگر کمکی نمی کند، استفاده کنید…
  2. ریمیکس Streaming. یا حتی بدترین …
  3. مشکل تأخیر سرویس گیرنده-سرور خود را بررسی کنید.

می بینمت!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا