تنشئ معظم تطبيقات صفحات الخادم (ASP) النشطة بيانات HTML-Format المقدمة للمستخدمين عبر سلسلة السلسلة. تقارن هذه المقالة عدة طرق لإنشاء دفق بيانات HTML هذا ، وفي بعض الحالات تتفوق بعض الطرق على الآخرين في الأداء. تفترض هذه المقالة أن لديك بالفعل بعض المعرفة بـ ASP وبرمجة Visual Basic.
عند كتابة صفحة ASP ، يقوم المطور بالفعل بإنشاء دفق نص منسق يتم كتابته إلى عميل الويب من خلال كائن الاستجابة الذي يوفره ASP. هناك مجموعة متنوعة من الطرق لإنشاء دفق النص هذا ، وستكون للطريقة التي تختارها تأثير كبير على أداء وقابلية تطبيق الويب الخاصة بك. في كثير من الأحيان ، عندما ساعدت العملاء على تحسين أداء تطبيقات الويب الخاصة بهم ، وجدت أن إحدى الطرق الأكثر فعالية هي تغيير طريقة إنشاء تدفقات HTML. ستقدم هذه المقالة العديد من التقنيات الشائعة واختبار تأثيرها على أداء صفحة ASP البسيطة.
يتبع العديد من مطوري ASP مبادئ هندسة البرمجيات الجيدة ويضعون رمزهم قدر الإمكان. يتضمن هذا التصميم عادةً ملفات تحتوي على وظائف تنسيق أجزاء محددة متقطعة من الصفحة. يمكن أن ينشئ إخراج سلسلة هذه الوظائف (عادةً رمز جدول HTML) صفحة كاملة من خلال مجموعات مختلفة. قام بعض المطورين بتحسين هذا النهج من خلال نقل وظائف HTML هذه إلى مكونات Visual Basic COM ، على أمل الاستفادة من الأداء الإضافي الذي توفره التعليمات البرمجية المترجمة.
على الرغم من أن نهج التصميم هذا جيدًا ، إلا أن الطريقة المستخدمة لإنشاء سلاسل تشكل مكونات رمز HTML غير المتواصل لها تأثير كبير على أداء موقع الويب وقابلية التوسع ، سواء تم تنفيذ العملية الفعلية في ملف ASP أو في مكون Visual Com.
يرجى الاطلاع على مقتطف الكود التالي من وظيفة trustml. المعلمة المسماة هي مجرد مجموعة من الأوتار التي تحتوي على بعض البيانات التي سيتم تنسيقها في بنية جدولية (على سبيل المثال ، البيانات التي تم إرجاعها من قاعدة بيانات).
دالة trustml (البيانات) dim nrepfor nrep = 0 to 99 shtml = shtml & vbcrlf _ & "<tr> <td>" & (nRep + 1) & "</td> <td>" _ & data (0 ، nrep) & "</td> <td>" البيانات (2 ، NREP) و "</td> <td>" _ & data (2 ، nREP) & "</td> <td>" _ & data (3 ، nREP) و "</td> <td>" _ & data (4 ، nREP) & "</td> <td> "</td> </tr>
هذه طريقة شائعة يستخدمها العديد من مطوري ASP و Visual Basic عند إنشاء رمز HTML. يتم إرجاع النص الوارد في متغير SHTML إلى رمز الاتصال ويتم كتابته إلى العميل باستخدام Response.write. بالطبع ، يمكن التعبير عن هذا أيضًا كرمز مماثل يضمن مباشرة صفحة لا تحتوي على وظيفة truphtml. المشكلة في هذا الرمز هي أن أنواع بيانات السلسلة (BSTR أو السلاسل الأساسية) التي يستخدمها ASP و Visual Basic لا يمكنها تغيير الطول بالفعل. هذا يعني أنه كلما تغير طول السلسلة ، سيتم تالف التمثيل الأصلي للسلسلة في الذاكرة ، وسيتم إنشاء تمثيل جديد يحتوي على بيانات السلسلة الجديدة: سيؤدي ذلك إلى زيادة تشغيل الذاكرة وتخصيص الذاكرة. بالطبع ، قامت ASP و Visual Basic بحل هذا الأمر لك ، وبالتالي لن يظهر النفقات العامة الفعلية على الفور. يتطلب التخصيص وعدم التمسك أن رمز وقت التشغيل الأساسي يفتح كل قفل مخصص ، لذلك يتطلب الكثير من النفقات العامة. تصبح هذه المشكلة واضحة بشكل خاص عندما تصبح الأوتار كبيرة ، ويجب تخصيص أجزاء كبيرة من الذاكرة وتخصيصها بطريقة سريعة ومستمرة ، حيث تحدث أثناء تسلسل السلسلة الكبيرة. على الرغم من أن هذه المشكلة لها تأثير ضئيل على بيئة المستخدم الواحد ، إلا أنها يمكن أن تسبب مشكلات خطيرة في الأداء وقابلية التوسع في بيئات الخادم (على سبيل المثال ، تطبيقات ASP التي تعمل على خادم الويب).