تقنيات لجعل الإكمال التلقائي على موقع الويب أكثر استجابة

StackOverflow https://stackoverflow.com/questions/625432

  •  05-07-2019
  •  | 
  •  

سؤال

يوجد في شاشة البحث المتقدم بموقعي على الويب حوالي 15 حقلاً تحتاج إلى حقل الإكمال التلقائي.
يعتمد محتواها على قيمة بعضها البعض (لذا إذا تم ملء إحداهما، سيتغير محتوى الآخر اعتمادًا على قيمة الأول).
تحتوي معظم الحقول على قدر كبير من الاحتمالات (آلاف الإدخالات على الأقل).

قم حاليًا بإجراء مكالمة أجاكس إذا توقف المستخدم عن الكتابة لمدة نصف ثانية.يقوم استدعاء ajax هذا بإجراء اتصال سريع بفهرس Lucene الخاص بي وإرجاع مجموعة من كائنات JSON.الطريقة نفسها سريعة حقًا، لكن اتصال البيانات ونقلها بطيء جدًا.

إذا نظرت إلى مواقع أخرى (مثل الفيسبوك)، فإن الإكمال التلقائي لها يكون فوريًا.أعتقد أنهم وضعوا القيم المحتملة في HTML الخاص بهم، لذلك لا يتعين عليهم القيام برحلة ذهابًا وإيابًا.لكنني أخشى أنه مع كمية البيانات التي أتعامل معها، فإن هذا ليس خيارًا.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

  1. إرجاع أعلى النتائج x فقط.
  2. احصل على بعض الاتجاهات حول ما يختاره المستخدمون ، والترتيب بناء على ذلك ، ويفضل تلقائيا.
  3. نتائج ذاكرة التخزين المؤقت لكل مجموعة URL وضغطات المفاتيح ، حتى لا تضطر إلى الذهاب والإياب إذا كنت قد جلبت النتيجة بالفعل قبل.
  4. مشاركة ذاكرة التخزين المؤقت هذه مع الجميع عمليات الإكمال التلقائي التي تستخدم عنوان URL نفسه و مجموعة ضغطات المفاتيح.
  5. طبعًا تمكين ضغط gzip ل JSON ، وتأكد من تعيين ملف رؤوس ذاكرة التخزين المؤقت للتخزين المؤقت للبعض الوقت.الوقت يعتمد على السعر الخاص بك من تغيير استجابة الإكمال التلقائي.
  6. قم بتحسين JSON لإرسال ملف الحد الادني.لا ترسل أي شيء لا تحتاجه.

نصائح أخرى

هل يعود ALL نتائج الاحتمالات أو مجرد أكبر 10 ككائنات سلمان.

ولقد لاحظت الكثير من الناس بإرسال أعداد كبيرة من النتائج مرة أخرى إلى الشاشة، ولكن بعد ذلك تظهر فقط القليلة الأولى. عن طريق إرسال الظهر أعداد صغيرة من النتائج، يمكنك تقليل نقل البيانات.

وإرجاع نتائج قمة "X"، بدلا من اللائحة بأكملها، إلى تقليص عدد الخيارات؟ قد ترغب أيضا في محاولة لوضع بعض تتجه لتتبع ما اختيار المستخدمين من القائمة بحيث يمكنك محاولة لجعل كبار "X" الأكثر استخداما / معظم الذي ينص عليها. هل يمكن أن تعود دائما قائمة الأكثر صلة أولا، ثم العودة قائمة كاملة إذا كانت لا تزال تكافح.

وبالإضافة إلى الحد من مجموعة من النتائج لكبار X مجموعة نظر تمكين التخزين المؤقت على ردود طلبات AJAX (والذي يعني استخدام GET والحفاظ على URL بسيط).

والمذهل كيف كثير من الأحيان المستخدمين سوف BACKSPACE ثم في نهاية المطاف إعادة كتابة بالضبط نفس المضمون. أيضا من خلال السماح للجمهور ومن جانب الخادم التخزين المؤقت الخاصة بك يمكن تسريع الوقت الكلي مستديرة trup.

  • تخزين النتائج مؤقتًا في System.Web.Cache
  • استخدم ذاكرة التخزين المؤقت لوسين
  • استخدم GET not POST حيث يقوم IE بتخزين هذا مؤقتًا
  • احصل فقط على مجموعة فرعية من النتائج (10 كما يقترح الناس)
  • جرب أداة الإكمال التلقائي اللائقة لجهة خارجية مثل يوي واحد

وزيارات كبار-N إدخالات هو نهج جيد. ولكن إذا كنت ترغب / يجب أن تعود <م> جميع البيانات، وأود أن محاولة تحديد البيانات التي يتم إرسالها والكائن JSON نفسها.

وعلى سبيل المثال:

و"هذه الشركة هنا مع اسم طويل" تصبح "هذا هنا الشركة ..." (كنت وضعت النقاط في جانب العميل اسم - مرة أخرى؛ نقل ما لا يقل عن البيانات).

وبقدر ما يذهب الكائن JSON:

{n: "This Here Company", v: "1"}

... أين "ن" سيكون اسم و"ضد" سيكون القيمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top