احتفظ بترقيم الصفحات قابلاً للتكرار في حالة إجراء عمليات التغيير

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

  •  01-07-2019
  •  | 
  •  

سؤال

إذا أراد أحد ترقيم الصفحات النتائج من مصدر بيانات يدعم ترقيم الصفحات، فيجب علينا الانتقال إلى عملية:

  1. تحديد حجم الصفحة - وهو عدد النتائج التي سيتم عرضها في كل صفحة؛
  2. جلب كل صفحة يطلبها المستخدم باستخدام الإزاحة = رقم الصفحة (0 على أساس) * حجم الصفحة
  3. إظهار نتائج الصفحة التي تم جلبها.

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

page_size = 10;
get page 0 -> results from 0 to 9;
user inserts a record that due to the query being executed goes to page 0 - the one just shown;
get page 1 -> results from 10 to 19 - the first results on the page is the result on the old page 0.

يمكن أن يسبب السلوك الموصوف ارتباكًا للمشاهد.هل تعرف أي حل عملي للتغلب على هذه المشكلة؟

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

المحلول

هناك عدد قليل من المدارس الفكرية حول هذا.

  1. يتم تحديث البيانات فليكن
  2. يمكنك تنفيذ نوع من طريقة التخزين المؤقت التي ستحتفظ بمجموعة النتائج بأكملها (قد لا يكون هذا خيارًا إذا كان العمل مع مجموعات بيانات كبيرة حقًا)
  3. يمكنك إجراء مقارنة في كل عملية صفحة وإخطار المستخدم إذا تغير إجمالي عدد السجلات

.

نصائح أخرى

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

وطالما أن المستخدمين يفهمون أن البيانات الأساسية تتغير دائمًا، فلن يتم الخلط بينهم.لذلك فقط افعل ذلك بالطريقة المباشرة.

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

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