أعلن فريق Inertia.js عن إطلاق الإصدار 3.9.0، الذي يأتي بمجموعة من التحسينات والميزات الجديدة التي تركز على تعزيز الأداء وتجربة المستخدم. يضيف هذا التحديث خيارًا جديدًا للتحكم في عملية الاستطلاع (polling) في علامات التبويب غير النشطة، وميزة مهمة لاكتشاف استعادة سجل التصفح، بالإضافة إلى إصلاحات لزر الرجوع وتحسينات في إدارة ذاكرة التخزين المؤقت.
تحسينات الأداء في علامات التبويب الخلفية
أضاف الإصدار الجديد خيار background إلى الدالتين `usePoll()` و `router.poll()`. قبل هذا التحديث، كانت عملية الاستطلاع في علامات التبويب المخفية تعمل بفاصل زمني أبطأ، لكن لم يكن هناك خيار لإيقافها تمامًا. الآن، يمكن للمطورين التحكم في سلوك الاستطلاع باستخدام ثلاثة قيم:
- `throttle`: هو السلوك الافتراضي، ويستمر في تشغيل الاستطلاع بفاصل زمني أبطأ (كل 10 فواصل).
- `pause`: يوقف الاستطلاع تمامًا حتى تصبح علامة التبويب مرئية مرة أخرى. إذا كان من المفترض إرسال طلب أثناء إخفاء علامة التبويب، فسيتم إرساله فورًا عند ظهورها.
- `continue`: يحافظ على تشغيل الاستطلاع بالفاصل الزمني الكامل، وهذا يحل محل الخيار `keepAlive` الذي أصبح مهملًا الآن. كما يعالج الإصدار مشكلة بدء الاستطلاع بينما تكون علامة التبويب مخفية بالفعل.
هذه الميزة تعني تقليل استهلاك الموارد وتحسين أداء التطبيق بشكل عام، خاصة في السيناريوهات التي يكون فيها لدى المستخدم العديد من علامات التبويب المفتوحة.
تعزيز تجربة المستخدم وإدارة السجل
يضيف الإصدار 3.9 خاصية type إلى تفاصيل حدث `navigate`. هذه الخاصية تتيح للمطورين معرفة نوع التنقل الذي حدث: `initial` لتحميل الصفحة الأول، `visit` للزيارات العادية، و `history` عندما يقوم المستخدم بالرجوع أو التقدم في سجل المتصفح. تتيح هذه الميزة للمطورين تحديث بيانات معينة فقط عند استعادة الصفحة من السجل، مما يضمن عرض معلومات حديثة.
كما تم حل مشكلة سابقة حيث كانت ذاكرة التخزين المؤقت للتحميل المسبق (prefetch cache) تبقى قائمة حتى بعد مسح سجل التصفح باستخدام `router.clearHistory()` أو `Inertia::clearHistory()`. هذا يعني أن صفحات محمية كانت قد تظهر مؤقتًا بعد تسجيل الخروج. الآن، يتم مسح ذاكرة التخزين المؤقت هذه تلقائيًا عند مسح السجل، مما يعزز الأمان ويضمن سلوكًا متوقعًا للتطبيق.
تضمنت التحديثات أيضًا إصلاحات لزر الرجوع في المتصفح، حيث تم إلغاء أي تحديثات للصفحة كانت قيد المعالجة (مثل التحميل الجزئي للبيانات) عند الضغط على زر الرجوع. هذا يمنع ظهور محتوى قديم أو غير متوقع. كما تم إصلاح مشكلة في `useRemember` كانت تتسبب في استعادة حالة من صفحة سابقة عند زيارات جديدة، مما يؤدي إلى ظهور قيم لم يعد لها وجود.
بالإضافة إلى ذلك، تم معالجة مشكلة طلبات `InfiniteScroll` التي كانت تبدأ بعد بدء التنقل، مما كان يسبب أخطاء أو دمجًا غير صحيح للبيانات. يقوم المكون الآن بإلغاء طلباته المعلقة عند إلغاء تحميله ويتجاهل الردود التي تصل بعد بدء تنقل جديد.
ماذا يعني هذا للمطورين؟
تقدم تحسينات Inertia.js v3.9 للمطورين أدوات أفضل لبناء تطبيقات ويب أكثر كفاءة وسلاسة. القدرة على التحكم في الاستطلاع في علامات التبويب الخلفية تعني توفيرًا في موارد الخادم والعميل، بينما تضمن ميزة اكتشاف استعادة السجل تحديث البيانات بشكل صحيح، مما يحسن تجربة المستخدم. هذه التحديثات تعزز من موثوقية التطبيقات المبنية باستخدام Inertia.js وتجعلها أكثر استجابة ودقة، خصوصًا في سيناريوهات التنقل المعقدة.
المصدر: laravel-news.com