انتقل إلى محتوى الدرس

Debouncing Keystrokes on the Frontend تقليل طلبات الخادم بتقنية Debounce عند الكتابة

ابنِ محرك بحث فوري الإكمال التلقائي باستخدام PHP 8 واستعلامات PDO المحضرة بـ LIKE واستجابات JSON وتأخير الإدخال Debounce.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

بدون تقنية التأخير الذكي (Debounce)، فإن كتابة كلمة من 10 أحرف تطلق 10 طلبات HTTP منفصلة إلى خادم PHP خلال ثانية واحدة، مما يرهق قاعدة البيانات ويسبب تداخل النتائج.

  • تعتمد تقنية Debounce على إعادة ضبط مؤقت زمني (عادةً من 250 إلى 300 مللي ثانية) مع كل ضغطة زر، فلا يُرسل الطلب إلا بعد توقف المستخدم عن الكتابة.
  • اربط تقنية Debounce بكائن AbortController في JavaScript لإلغاء أي طلب سابق لم يكتمل بعد عند بدء بحث جديد.
  • حتى مع وجود Debounce في الواجهة، احرص دائماً على إبقاء استعلام PHP سريعاً ومقيداً بسقف LIMIT.

يقلص استخدام Debounce عدد الطلبات من 14 ضغطة مفتاح متتالية إلى طلبين فقط لخادم PHP، مما يوفر 86% من الحمل على قاعدة البيانات.

PHP
<?php
// Comparing server load with and without 280ms input debouncing
$typedWord = "authentication";
$rawKeystrokes = strlen($typedWord);
$debouncedRequests = 2; // User paused once mid-word and once at the end

$savedPercent = round((1 - ($debouncedRequests / $rawKeystrokes)) * 100);
echo "Raw requests       : $rawKeystrokes\n";
echo "Debounced requests : $debouncedRequests ($savedPercent% load reduction)\n";