عند العودة إلى صفحة سابقة قد يعيد المتصفح حالتها بسرعة من ذاكرة Back/Forward Cache بدل تحميلها من البداية. هذه ميزة تحسن سرعة التنقل، لكنها قد تعرض معلومات قديمة إذا تغيّرت الجلسة أو حالة الطلب أثناء غياب الصفحة. الحل ليس تعطيل الذاكرة المؤقتة بلا سبب، بل التعامل مع عودة الصفحة كحدث مستقل.
افهم الفرق بين bfcache وتخزين HTTP
يحتفظ bfcache أحيانًا بحالة الصفحة بما فيها DOM وموضع التمرير وذاكرة JavaScript، بينما يعيد HTTP cache استخدام استجابات الشبكة. لذلك قد تظهر واجهة جاهزة فورًا دون أن تنفذ تهيئة الصفحة من جديد. اختبر التنقل بزر الرجوع والتقدم بدل الاعتماد على إعادة تحميل كاملة، وراقب أحداث دورة حياة الصفحة.
استخدم pageshow لفحص حالة الاستعادة
يساعد حدث pageshow وخاصية persisted على معرفة أن الصفحة عادت من ذاكرة التنقل في الحالات المدعومة. عند العودة، أعد التحقق من البيانات التي تتغير سريعًا مثل رصيد أو حالة حجز أو إشعارات، مع الحفاظ على موضع التمرير ومدخلات المستخدم قدر الإمكان. لا ترسل جميع الطلبات بلا تمييز؛ حدد البيانات التي تتطلب تحديثًا.
احمِ الصفحات الحساسة من عرض حالة غير مناسبة
إذا سجّل المستخدم الخروج في تبويب آخر، فلا ينبغي أن تظل صفحة الحساب تعرض بيانات حساسة وكأن الجلسة صالحة. تحقق من حالة التفويض عند العمليات وعند استعادة الواجهة، وأخفِ المحتوى عند اكتشاف انتهاء الجلسة وفق سياسة المنتج. لا تعتبر Cache-Control وحده بديلًا عن حماية الوصول على الخادم.
راجع الموارد والاتصالات الطويلة
قد تتوقف بعض المؤقتات والاتصالات عند انتقال الصفحة إلى الخلفية أو عند تخزينها، ثم تحتاج إعادة تهيئة مناسبة عند العودة. تجنب ترك اتصالات WebSocket مكررة أو مستمعي أحداث مضافين أكثر من مرة. صمم وظائف التهيئة والإيقاف بحيث تكون قابلة للاستدعاء المتكرر دون مضاعفة الآثار.
اختبر سيناريوهات واقعية
افتح قائمة طلبات، وانتقل إلى التفاصيل، ثم غيّر حالة الطلب من تبويب آخر وعد بزر الرجوع. تحقق من سرعة العودة وصحة الحالة المعروضة. كرر الاختبار بعد تسجيل الخروج وتغيير اللغة وتبديل الشبكة. النجاح أن يحتفظ المستخدم براحة التنقل دون الاعتماد على بيانات انتهت صلاحيتها.
شارك في تقييم ونقاش المقال
رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.
النقاش
جارٍ تحميل التعليقات…