الكوكيز وLocal Storage وIndexedDB: ما الجلسة فعلًا

تسجيل الدخول يكتب في ثلاثة أماكن منفصلة. معرفة أيها أيّ تفسّر لماذا تصمد الجلسات أمام أشياء وتنكسر أمام أخرى، ولماذا يجب أن تنقل مزامنة الملف الثلاثة جميعًا.
«أن تكون مسجَّلًا للدخول» يبدو شيئًا واحدًا. لكنه ثلاثة على الأقل، مخزّنة في ثلاثة أماكن مختلفة بثلاث فترات صلاحية مختلفة، وهذا الفرق يفسّر معظم السلوك المربك الذي يواجهه الناس عند نقل الجلسات بين الأجهزة.
الكوكيز
أزواج مفتاح-قيمة صغيرة تُرسل تلقائيًا مع كل طلب إلى الموقع الذي ضبطها. هنا يعيش رمز الجلسة عادةً.
- محددة بنطاق ومسار، مع تاريخ انتهاء.
- كوكيز `Secure` لا تُرسل إلا عبر HTTPS؛ وكوكيز `HttpOnly` غير مرئية لجافاسكربت الصفحة.
- كوكيز الجلسة لا تاريخ انتهاء لها ومقصود بها أن تزول عند إغلاق المتصفح.
الكوكيز أصغر الثلاثة وأكثرها تحمّلًا للحمولة. افقدها فتخرج من حسابك.
Local Storage وSession Storage
تخزين نصي بأزواج مفتاح-قيمة، تقرؤه وتكتبه جافاسكربت الصفحة، ومحدد لكل أصل. لا يُرسل أبدًا مع طلب. على الصفحة أن تقرأه عمدًا.
تحتفظ التطبيقات هنا بالتفضيلات وتفاصيل الملف الشخصي المخزنة مؤقتًا وأعلام الميزات وغالبًا رمز تحديث. يبقى Local Storage حتى يُمسح؛ أما Session Storage فيدوم ما دام التبويب.
IndexedDB
قاعدة بيانات حقيقية في المتصفح: سجلات منظمة وفهارس ومعاملات. هنا يحتفظ تطبيق الويب الحديث بكل ما هو جوهري: سجلات الرسائل المخزنة مؤقتًا وطوابير العمل دون اتصال ومفاتيح التشفير للميزات المشفرة من طرف إلى طرف.
لماذا يهم هذا لملف التعريف
يعطي «العزل» معنى دقيقًا. يكون ملفان معزولين حين تكون هذه الثلاثة منفصلة، إضافةً إلى الذاكرة المؤقتة وحالة الإضافات. أداة تعزل الكوكيز وتشارك IndexedDB قد عزلت الثلث السهل من المشكلة.
كما يحدد المعيار لنقل ملف بين الأجهزة. نقل الكوكيز وحدها يعيد إنتاج شكل الجلسة دون جوهرها.
| المخزن | يكتبه | ما يحتويه عادةً |
|---|---|---|
| الكوكيز | الخادم ونص الصفحة البرمجي | رمز الجلسة، التفضيلات، معرّفات التتبع |
| Local Storage | نص الصفحة البرمجي | رموز التحديث، حالة الواجهة، تفاصيل الملف الشخصي المخزنة |
| Session Storage | نص الصفحة البرمجي | حالة كل تبويب، تُهمل عند إغلاقه |
| IndexedDB | نص الصفحة البرمجي | بيانات مخزنة مؤقتًا، طوابير دون اتصال، مفاتيح تشفير |
نقل جلسة بين أجهزتك
يلتقط PowerOps الكوكيز وLocal Storage وIndexedDB عند إغلاق الملف ويستعيدها حين يُفتح في مكان آخر. كل فئة مفتاح تشغيل، لمساحة العمل كلها أو لملف واحد، فتنقل بالضبط القدر الذي تقصده.
خاصيتان تستحقان المعرفة عن كيفية عمل ذلك:
- اللقطة تُشفَّر على الجهاز الذي جاءت منه، بمفتاح يخص مساحة العمل، وتُفك على الجهاز الذي يفتح الملف. هذا ليس تشفيرًا من طرف إلى طرف: تحتفظ الخدمة بنسخة من ذلك المفتاح كي تتمكن حواسيبك الأخرى من استلامه.
- الملف مفتوح على جهاز واحد في كل مرة. وما دام مفتوحًا فهو يحمل عقد إيجار، ويُخبَر أي جهاز آخر بمن يملكه بدل السماح بتفرّع الجلسة إلى نسختين متباعدتين.
النقطة الثانية قيد مقصود. جهازان يعدّلان جلسة واحدة باستقلال ينتجان جلستين نصف صالحتين، وغالبًا حسابًا مسجَّلًا خروجه على الاثنين. وليس لمخزن الكوكيز أي وسيلة لحل تعارض الدمج.
الخلاصة العملية
أغلق الملفات بدل قتلها. الكتابة عند الإغلاق هي ما يجعل الجلسة قابلة للنقل، وهي أرخص عادة في هذه القائمة.

