سؤال

مع Rails 3 ، فإن آلية تخزين الجلسة الافتراضية هي ملف تعريف الارتباط. أفترض أن هذا يعني أن المحتويات داخل جلسة التجزئة يتم تسلسلها وتشفيرها وتخزينها داخل ملف تعريف الارتباط في المتصفح؟ هل هذا يعني أنه لا يوجد (أو قليل جدًا) من الجلسة مخزنة في الخادم؟

لقد واجهت بعض المشكلات التي كان لدي خطأ في تدفق ملفات تعريف الارتباط وأنا أفترض لأنني ظللت في إضافة مثيل المستخدم الخاص بي (والذي تم ربطه/جلبه أيضًا من ملف تعريف الارتباط).

u = session[:user]
u.add_this lots_of_data

لذلك في النهاية حصلت على خطأ في التدفق ملفات تعريف الارتباط.

هل أنا محق في هذا؟ هل الجلسات مخزنة بالكامل داخل ملفات تعريف الارتباط في القضبان 3 (افتراضيًا)؟

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

المحلول

نعم ، إذا كنت تستخدم متجر ملفات تعريف الارتباط ، يتم تخزين بيانات الجلسة في ملف تعريف الارتباط. إذا كنت ترغب في تخزينه على الخادم ، فستحتاج إلى استخدام متجر جلسة آخر.

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

في حالةكم ، فإن هذا يعني تخزين معرف المستخدم int he ، وتحميل المستخدم من DB في ript_filter.

نصائح أخرى

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

مرة واحدة ، انتهى بي الأمر بخطأ Cookieoverflow ، والسبب هو رسائل الفلاش [: إشعار].

إذا كنت تستخدم Flash [: NEMBLE] = "رسالة" ثم إعادة توجيه ، سيتم تخزين النص "رسالة" في ملف تعريف الارتباط. إذا كان حجم النص الذي تمريه أكثر من 4 كيلو بايت ، فستحصل على خطأ "ملف تعريف الارتباط"

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