Amirali Yaghoutiمهندس ارشد نرم‌افزار

مطالعه موردی مهندسی

پایداری صفحه‌بندی آرشیو

یک آرشیو می‌تواند سریع باشد و باز هم سر مرز صفحات خراب شود. این همان دسته باگی است که فقط وقتی دیده می‌شود که کسی واقعاً تا صفحه‌ی پنجم برود.

مسئله تجاری

صفحات آرشیو می‌توانند سریع به‌نظر برسند و باز هم سر مرز صفحات شکست بخورند: محصولات تکراری، لودرهای بی‌پایان، کاوش‌های صفحه‌بندی ۴۰۴ یا اسکریپت‌های درون‌خطی سنگین می‌توانند تجربه‌ی مرور ضعیف و فشار غیرضروری روی سرور بسازند.

آنچه تحویل دادم

  • انتقال runtime بزرگ اسکرول بی‌نهایت از خروجی درون‌خطی فوتر به یک اسِت MU قابل کش.
  • افزودن رفتار پایان سخت تا آرشیو وقتی به حداکثر صفحه‌ی واقعی رسید تمیز متوقف شود.
  • افزودن ترتیب قطعی آرشیو به‌عنوان آخرین شکننده‌ی تساوی، برای پرهیز از تکرار مرزی در نتایج صفحه‌بندی‌شده‌ی کاتالوگ.

رویکرد فنی

  • تکرار مرزی تقریباً همیشه یک مسئله‌ی ترتیب است نه یک مسئله‌ی کوئری. وقتی دو محصول امتیاز مرتب‌سازی یکسان دارند، ترتیبشان بین دو درخواست می‌تواند عوض شود و یکی در هر دو صفحه ظاهر می‌شود.
  • یک شکننده‌ی تساوی قطعی این را در ریشه حل می‌کند، به‌جای اینکه در سمت کلاینت دیداپلیکیت شود.
  • بیرون‌بردن runtime از فوتر درون‌خطی یعنی مرورگر می‌تواند کشش کند، که روی یک کاتالوگ که مرور طولانی دارد بیشترین اثر را می‌گذارد.

نتیجه و شواهد

این به‌روزرسانی اتکاپذیری مرور آرشیو را بهتر می‌کند و در عین حال سلکتورهای پروداکشن، قوانین URL صفحه‌بندی، جزئیات کاتالوگ و سورس پیاده‌سازی را خصوصی نگه می‌دارد.

اهمیت برای کارفرما

مرور کاتالوگ همان‌جایی است که خریدار ساعت بیشتر وقتش را می‌گذراند. محصولی که دو بار ظاهر می‌شود یا لودری که تمام نمی‌شود، اعتماد به کل فهرست را از بین می‌برد.

خلاصه-اجرایی-پروژه

خلاصه اجرایی خوانا

خلاصه_اجرایی {
  پروژه: "MU Archive Pagination Stability"
  بافت: "تجربه‌ی کاربری آرشیو ووکامرس"
  علت_ریشه: "ترتیب غیرقطعی سر مرز صفحات"
  اصلاح: "شکننده‌ی تساوی قطعی به‌عنوان آخرین معیار ترتیب"
  پایان: "توقف سخت روی حداکثر صفحه‌ی واقعی، بدون کاوش ۴۰۴"
  اسِت‌ها: "runtime اسکرول بی‌نهایت از فوتر درون‌خطی به
           یک اسِت MU قابل کش منتقل شد"
  خصوصی: "سلکتورها، قوانین URL صفحه‌بندی، سورس"
}

ارزش حرفه‌ای این پروژه

اصلاح ترتیب قطعی چیزی است که به آن اشاره می‌کنم. دیداپلیکیت سمت کلاینت علامت را پنهان می‌کرد و علت را باقی می‌گذاشت.

پایان سخت جزئیات کوچکی است که تفاوت بین یک آرشیو که تمام می‌شود و آرشیوی که برای همیشه ۴۰۴ می‌زند را می‌سازد.