الاحتفاظ بالبيانات في الجلسة مقابل.ملء على إعادة النشر

StackOverflow https://stackoverflow.com/questions/255728

سؤال

ما هو الأفضل، الاحتفاظ بمجموعة البيانات في الجلسة أو ملء مجموعة البيانات في كل إعادة نشر؟

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

المحلول

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

إذا تكمن جلسة العمل الخاصة بك على قاعدة البيانات، قد يكون من الأفضل أن مجرد إعادة الاستعلام واعد اسكان مجموعة البيانات إلا إذا كان الاستعلام مكلفة لتنفيذه.

نصائح أخرى

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

يعتمد الأمر على مدى كثافة القيام بذلك ومكان تخزين بيانات الجلسة الخاصة بك على الخادم.

من المؤكد أن الحفاظ على مجموعات البيانات في الجلسة يؤثر استخدام الذاكرة.يتم تخزين كافة متغيرات الجلسة في الذاكرة، أو في خادم SQL إذا كنت تستخدم حالة SQL Server.يمكنك أيضًا إلغاء تحميل التحميل على جهاز مختلف باستخدام وضع State Server.

جانب التسلسل/إلغاء التسلسل.إذا كنت تستخدم مجموعات بيانات كبيرة جدًا، فقد يؤثر ذلك على أداء جانب الخادم بشكل سيئ.

ومن ناحية أخرى وجود يمكن أن تكون حالات العرض الكبيرة جدًا على الصفحات بمثابة قاتل حقيقي للأداء.لذلك سأحتفظ بمجموعات البيانات في الجلسة أو في ذاكرة التخزين المؤقت وأبحث عن طريقة "outproc" لتخزين بيانات الجلسة تلك.

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

وأنا عادة ما يبقيه في الجلسة إذا لم تكن كبيرة جدا و / أو ديسيبل هو أبعد وبطيئة. إذا كانت البيانات كبيرة، بشكل عام، فمن الأفضل لإعادة تحميل.

وأحيانا استخدام ذاكرة التخزين المؤقت، وتحميل من ديسيبل أول مرة ووضعها في ذاكرة التخزين المؤقت. خلال إعادة النشر أتحقق من chache وإذا كان فارغا I تحميل. لذلك الخادم إدارة ذاكرة التخزين المؤقت في حد ذاته.

وعناء مع الدورة هي أنه إذا كان في بروك يمكن أن تختفي وهي ليست كبيرة، واذا كان الخادم الدولة ثم لديك لتسلسل واذا كان أشبع SQL your're القيام ذهابا وإيابا على أي حال!

وإذا كانت مجموعة نتائج كبيرة تفعل ترحيل مخصص بحيث كنت ستعود فقط مجموعة فرعية صغيرة من إجمالي النتائج.

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

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

وباستخدام ذاكرة التخزين المؤقت يعني لا يحتاج المستخدم الخاصة بها مجموعة من البيانات بل استخدام مجموعة العالمي.

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

وأنا مؤمن كبير في فك الارتباط، وأنا نادرا ما، نرى أن هناك حاجة لرمي البيانات الكاملة إلى واجهة المستخدم.

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

ومجموعات فرعية أصغر من البيانات، عند الاقتضاء، هي أكثر كفاءة بكثير. هو طلبك فعليا باستخدام كافة الميزات ضمن مجموعة بيانات على واجهة المستخدم؟ إن لم يكن، بعد ذلك أفضل طريقة للمضي قدما يكون لتمرير البيانات فقط إلى أن كنت عرض.

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

في تلك المذكرة، فما استقاموا لكم فاستقيموا حفاظ على البيانات، والتي هي ثابتة إلى حد كبير (على سبيل المثال، فإنه لا يتم تحديث في كثير من الأحيان) في ذاكرة التخزين المؤقت. لذلك كنت بحاجة الى ان ننظر في كيفية غالبا ما يتم تحديث البيانات قبل أن تتمكن من حقا قرارا لهذا الغرض.

وأخيرا، وأنا أقول هذا مرة أخرى، أرى ضرورة الاستفادة من مجموعة البيانات في UI جدا، جدا rarely..it هو كائن بيانات ثقيلة جدا والتكاليف والفوائد للنظر في متطلبات البيانات الخاصة بك، مقابل سهولة التنفيذ ، يمكن أن تفوق بكثير الحاجة إلى ذاكرة التخزين المؤقت مجموعة بيانات.

وIMHO، قواعد البيانات سيئة بدلا لاستخدام إذا كنت قلقا حول أداء أو استخدام الذاكرة.

وإجابتك لا يلمح في استخدام البيانات. هل هو مرجع البيانات؟ هو المستخدم بتحديث بنشاط؟ وأكثر من مستخدم واحد يعني في الحصول التحديث في أي وقت واحد؟

وبدون أي معلومات أفضل من التي قدمتها، والذهاب مع الحكمة المقبولة التي تقول حفظ كميات كبيرة من البيانات في جلسة هو وسيلة لضمان أن التطبيق الخاص بك سوف <م> لا نطاق وسوف تتطلب موارد ضخمة لخدمة حفنة من الناس.

ووعادة ما تكون هناك طرق أفضل لإدارة مجموعات كبيرة من البيانات دون اللجوء إلى تحميل جميع البيانات في الذاكرة.

وإذا تعذر ذلك، إذا لزم بيانات التطبيق الخاص بك هي monsterous حقا، ثم النظر عميل الثقيلة مع خدمة الإنترنت في نهاية العام. قد يكون أكثر ملاءمة من صنع صفحة على شبكة الإنترنت.

وكما لاحظ إجابات أخرى، فإن الجواب "يعتمد". ومع ذلك سوف أفترض أنك تتحدث عن البيانات التي يتم مشاركتها بين المستخدمين. في هذه الحالة يجب عليك <م> لا تخزين بيانات في جلسة عمل المستخدم، ولكن إعادة الناس على إعادة النشر.

وبالإضافة إلى ذلك، يجب عليك ملء مخبأ بالقرب من طبقة الوصول إلى البيانات من التطبيق الخاص بك لرفع مستوى الأداء التفاعلي وتقليل الحمل على قاعدة البيانات. إن تصميم ذاكرة التخزين المؤقت تعتمد مرة أخرى على نوع البيانات (للقراءة فقط مقابل القراءة / الكتابة مقابل قراءة في الغالب).

وهذا النهج يفصل الدورة المستخدم (مفهوم طبقة UI) من إدارة البيانات، ويوفر فائدة إضافية تتمثل في دعم الاستخدام المشترك للبيانات المخزنة مؤقتا (في الحالات التي يكون فيها البيانات المشتركة عبر المستخدمين).

ولا -؟ ر "الاحتفاظ" أي شيء! عرض فقط ما يحتاجه المستخدم من معرفة وبناء على مخطط ترحيل كفاءة لرؤية صفوف الوراء أو fowards.

وروبية

ونضع في الدورة. هل لديك الخيار لإعادة الناس إذا كنت بحاجة إلى ذلك، على سبيل المثال إذا تم محو الذاكرة الدورة.

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