أدى تطوير تطبيقات الويب إلى زيادة استخدام التخزين من جانب العميل، وهناك طرق مختلفة لتنفيذ التخزين من جانب العميل. إن الحل الأبسط والأكثر توافقًا هو ملف تعريف الارتباط، ولكن باعتباره مخزنًا حقيقيًا من جانب العميل، فإن ملف تعريف الارتباط به العديد من العيوب القاتلة. بالإضافة إلى ذلك، يمكن أيضًا استخدام userData Behavior في IE6 والإصدارات الأحدث، ويمكن استخدام globalStorage ضمن Firefox، ويمكن استخدام Flash Local Storage في البيئات التي تحتوي على مكونات Flash الإضافية، ومع ذلك، فإن جميع هذه الطرق لها قيود توافق، لذا فهي ليست كذلك حقًا مثالية للاستخدام. استجابة للموقف المذكور أعلاه، يوفر HTML5 حلاً أكثر مثالية: إذا كنت بحاجة إلى تخزين بيانات معقدة، فيمكنك استخدام قاعدة بيانات الويب ، ويمكنك استخدام SQL مثل برنامج العميل (ولكن معيار قاعدة بيانات الويب حاليًا في طريق مسدود، و المتصفحات التي تم تنفيذها حاليًا محدودة للغاية)؛ إذا كنت بحاجة إلى تخزين البيانات التي يمكن حلها ببساطة باستخدام أزواج المفاتيح/القيمة، فيمكنك استخدام Web Storage . تقدم هذه المقالة بشكل أساسي الوضع المحدد للتخزين على الويب من جوانب مختلفة.
تخزين الجلسة والتخزين المحلي
يتكون تخزين الويب في الواقع من جزأين: sessionStorage وlocalStorage.
يتم استخدام sessionStorage لتخزين البيانات محليًا في الجلسة، ولا يمكن الوصول إلى هذه البيانات إلا من خلال الصفحات الموجودة في نفس الجلسة، ويتم إتلاف البيانات عند انتهاء الجلسة. ولذلك فإن sessionStorage ليس مخزنًا محليًا دائمًا، بل هو تخزين على مستوى الجلسة فقط.
يتم استخدام localStorage للتخزين المحلي المستمر، وما لم يتم حذف البيانات بشكل نشط، فلن تنتهي صلاحية البيانات أبدًا.
لماذا تختار تخزين الويب بدلاً من ملفات تعريف الارتباط؟
بالمقارنة مع ملفات تعريف الارتباط، يتمتع التخزين عبر الويب بالعديد من المزايا، والتي يمكن تلخيصها على النحو التالي:
1. مساحة تخزين أكبر: كل مساحة تخزين مستقلة ضمن IE8 تبلغ 10 ميجا بايت. يختلف تنفيذ المتصفحات الأخرى قليلاً، ولكنه أكبر بكثير من ملف تعريف الارتباط.
2. لن يتم إرسال المحتوى المخزن إلى الخادم: عند تعيين ملف تعريف الارتباط، سيتم إرسال محتوى ملف تعريف الارتباط إلى الخادم مع الطلب، وهو ما يعد مضيعة لعرض النطاق الترددي للبيانات المخزنة محليًا. البيانات الموجودة في تخزين الويب موجودة محليًا فقط ولا تتفاعل مع الخادم بأي شكل من الأشكال.
3. واجهات أكثر ثراءً وسهلة الاستخدام: يوفر Web Storage مجموعة أكثر ثراءً من الواجهات، مما يجعل عمليات البيانات أسهل.
4. مساحة تخزين مستقلة: كل مجال (بما في ذلك النطاقات الفرعية) لديه مساحة تخزين مستقلة، كل مساحة تخزين مستقلة تمامًا، لذلك لن يكون هناك أي ارتباك في البيانات.
كيف هو التوافق؟
تم إجراء الاختبارات المختلفة التالية في المتصفحات التالية: IE8، Firefox3.6، Chrome5، Safari4، Opera10. وتبين أن تنفيذ واجهات برمجة التطبيقات في كل متصفح هو نفسه بشكل أساسي، وهناك بعض مشكلات التوافق، ولكنها ليست كذلك تؤثر على الاستخدام العادي.
اختبار تخزين الجلسة
يختبر هذا القسم بشكل أساسي بعض ميزات sessionStorage. وينصب تركيز الاختبار على تعريف الجلسة بواسطة كل متصفح والوضع عبر النطاقات. طريقة الاختبار بسيطة للغاية: افتح الصفحة "أ" ، واكتب بيانات الجلسة الحالية في الصفحة "أ"، ثم استخدم طرقًا مختلفة للدخول إلى الصفحة "ب" من خلال الروابط أو الأزرار الموجودة في الصفحة "أ". إذا كانت الصفحة "ب" يمكنها الوصول إلى البيانات الموجودة في الصفحة "أ"، فهذا يعني أن المتصفح يعتبر الصفحتين الحاليتين A وB بمثابة نفس الجلسة. وتظهر النتائج المحددة للاختبار في الجدول 1:
جلسة الجدول 1: اختبار توافق التخزين
كما يتبين من الجدول 1، لأسباب أمنية، لا يُسمح بالوصول إلى بيانات الجلسة عبر النطاقات في جميع المتصفحات، بما في ذلك النطاقات الفرعية المشتركة. وفي جوانب أخرى، يكون التنفيذ في المتصفحات الرئيسية متسقًا نسبيًا.