سؤال

لقد كتبت بلدي PageStatePersister الفصل على أساس SessionPageStatePersister الذي يكتب أحدث 10 ViewstateS لجلسة إلى قرص مشترك. أعتقد أن هذا سوف يتوسع أفضل من الحفاظ عليه Viewstate في الجلسة نظرًا لأن جميع خوادم الويب يمكنها الوصول إليها ، فلن يضطروا إلى التعامل مع انتهاء الصلاحية ، واستخدام ذاكرة أقل.

عندما يغلق المستخدم المتصفح ، فإنه يخطر الخادم ويحذف الخادم تلك الملفات التي لم يتم الوصول إليها لمدة ساعتين. حتى الآن جيد جدًا ، لكنني أتساءل عما إذا كان ذلك سيكون أسرع وأكثر كفاءة في التخزين Viewstate في قاعدة بيانات SQL Server بدلاً من ذلك.

  1. كل ViewState الملف 30 كيلو في المتوسط.
  2. في الوقت الحالي ، يقرأ فقط حقلًا مخفيًا للحصول على مفتاح ViewState والوصول إلى الملف مباشرةً و Deserialize. ليست هناك حاجة للفرز أو البحث.
  3. سيكون هناك ما
  4. يجب أن تكرر بشكل دوري من خلال الملفات وحذف أقدم ملف.

لذا ، ما هو أفضل في هذه الحالة: أ ملف ثابت نظام أو أ قاعدة البيانات?

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

المحلول

سيكون من الأفضل تخزين ViewState في SQL Server. إذا كنت تريد في النهاية الزيادة من 10 إلى 50 إلى 50 ، على سبيل المثال ، فستكون زيادة تافهة نسبيًا في حمل DB. يجب تجنب القرص I/O عمومًا كلما كان ذلك ممكنًا ، Moreso من DB I/O. ستعمل عمليات التنظيف أيضًا بشكل أفضل ، حيث أن السعي إلى الأراضي القاحلة من الملفات المهجورة على القرص ربما يكون أثقل بكثير من WHERE DateInserted > 20 minutes ago.

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