ASP الكلاسيكي - متى يتم استخدام Response.flush؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

لدينا تقرير بطيء بشكل مؤلم. لقد أضفت Response.flush ويبدو أنه أفضل كثيرًا.ما هي بعض المحاذير من استخدام هذه الطريقة.

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

المحلول

إذا لم يتم تعيين Response.Buffer على true، فسوف تحصل على خطأ وقت التشغيل.بالإضافة إلى ذلك، إذا تم استدعاء أسلوب Flush على صفحة ASP، فإن الخادم لا يلبي طلبات Keep-Alive لتلك الصفحة.

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

نصائح أخرى

توسيع الجواب وين:إذا كان أي شيء تفعله يحتاج إلى تعيين Response.Headers، فلا يمكنك القيام بذلك بعد مسح أي جزء من الاستجابة.

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

تذكر أن التنظيف اليدوي له تأثير مناسب فقط عند تخزين الصفحة مؤقتًا من البداية، وإلا فسيتم مسح IIS تلقائيًا (دفق الصفحة إلى العميل).

يجب عليك تجنب التنظيف بشكل متكرر حيث سيتعين على IIS بعد ذلك استخدام الموارد عند مسح الصفحة كثيرًا بدلاً من معالجة البرنامج النصي.أي.:قم بتدفق كل 50 صفًا بدلاً من صف واحد.

قد يكون Response.flush مفيدًا لإرسال رأس التقرير إلى المتصفح..ثم اعرض "رسالة تحميل"، ثم قم بعملية التقرير وقمت بمسح التقرير، ثم قم بتنفيذ جزء صغير من جافا سكريبت لإخفاء رسالة "التحميل".

بهذه الطريقة ستسمح للمستخدمين بمعرفة أن شيئًا ما يحدث، لذا لن يضغطوا على STOP BACK أو يغلقوا النافذة فقط حيث قد يغريهم ذلك.

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

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