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

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

فیلتر سریع آرشیو A2

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

مسئله تجاری

فیلترکردن کاتالوگ یکی از کندترین کارهایی بود که یک خریدار می‌توانست روی سایت انجام دهد. هر تغییر فیلتر کوئری‌های سنگین تاکسونومی و قیمت را روی یک رندر آرشیو که از قبل گران بود شلیک می‌کرد، و p95 مسیر آرشیو نزدیک ۵٫۲ ثانیه نشسته بود. فیلتر سریع‌تری می‌خواستم که صفحات دسته را سمت سرور رندرشده و قابل خزش نگه دارد.

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

  • یک رابط فیلتر مودال که با AJAX کار می‌کند، با گزینه‌های وابسته که بازتاب می‌دهند در بافت دسته‌ی فعلی واقعاً چه چیزی وجود دارد.
  • سطل‌های قیمت محاسبه‌شده از قیمت‌های واقعی کاتالوگ با منطق چندکی، تا بازه‌ها از داده پیروی کنند نه از پله‌های ثابت.
  • یک لایه‌ی کش ترنزینت با TTL ده‌دقیقه‌ای، پنجره‌ی کهنه‌ی شش‌ساعته و سقف مقدار ۵۱۲ کیلوبایتی.
  • باطل‌سازی خودکار: هوک‌های save_post_product و set_object_terms و هوک‌های ترم نسخه‌ی کش را پشت یک قفل کوتاه بالا می‌برند.
  • یک حالت امن با فالبک رندرشده‌ی سمت سرور، تا یک خطای جاوااسکریپت هیچ‌وقت جلوی مرور را نگیرد.

رویکرد فنی

  • محدودیت‌های قیمت از طریق یک فیلتر posts_clauses اجرا می‌شوند به‌جای شرط‌های روی‌هم‌چیده‌ی meta_query.
  • مجموعه‌های شناسه‌ی منطبق در سقف ۲۰٬۰۰۰ محدود شده‌اند تا یک دسته‌ی بسیار بزرگ نتواند از محدودیت حافظه یا اندازه‌ی کش عبور کند.
  • هر اندپوینت AJAX قبل از دست‌زدن به دیتابیس اکشن nonce را تأیید می‌کند.

نتیجه و شواهد

اندازه‌گیری‌شده روی ترافیک پروداکشن، p95 مسیر آرشیو بعد از عرضه از حدود ۵٫۲ ثانیه به حدود ۱٫۷ ثانیه افت کرد.

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

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

عمق اجرای پروژه

قدرت فیلتر سریع آرشیو A2 در این است که فقط به‌عنوان یک فیچر دیده نمی‌شود؛ ابتدا محدودیت واقعی فهمیده شده، سپس راه‌حل طوری ساخته شده که در عملیات روزانه قابل استفاده بماند.

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

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

خلاصه_اجرایی {
  پروژه: "A2 Fast Archive Filters"
  بافت: "کارایی ووکامرس"
  رابط: "مودال AJAX با گزینه‌های وابسته به بافت دسته"
  قیمت: "سطل‌های چندکی از قیمت‌های واقعی کاتالوگ"
  کش: "TTL ۱۰ دقیقه، پنجره‌ی کهنه ۶ ساعت، سقف ۵۱۲KB"
  باطل‌سازی: "save_post_product، set_object_terms، هوک‌های ترم"
  سقف: "۲۰٬۰۰۰ شناسه‌ی منطبق"
  فالبک: "حالت امن با رندر سمت سرور"
  اندازه‌گیری: "p95 آرشیو ۵٫۲ ثانیه ← ۱٫۷ ثانیه"
}

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

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

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