في بعض الأحيان تكون تطبيقات الويب الخاصة بنا سريعة جدًا عند اختبارها محليًا، ولكن عند اختبارها على شبكة LAN، سيتم العثور على مشكلات في الأداء؛ وفي بعض الأحيان سيتم العثور على تطبيقات ذات سرعة عادية على شبكة LAN في سؤال WAN. ترجع هذه المشكلات بشكل عام إلى الإهمال أو الأخطاء في التطبيق ولا تتعلق ببنية النظام، ويمكن العثور على المشكلة وحلها من خلال تصحيح الأخطاء والاختبار في البيئة الحقيقية.
ما نتحدث عنه اليوم هو تحسين أداء تطبيقات ASP.Net بشكل أساسي من خلال تحسين البنية.
لنختبر أولاً بعض التطبيقات البسيطة لـ ASP.Net.
بيئة الاختبار: AthlonXP 3200+، DDR400 512M، WindowsXP SP2، SQL Server 2000 الأصلي، جدول المنتجات لقاعدة بيانات Northwind الصينية (المستوردة من Access)، حوالي 70 سجلاً.
الرقم التسلسلي للاختبار | نوع البرنامج | طريقة الاختبار | نتيجة الاختبار (الطلبات في الثانية) | SQLServer الموارد المحتلة | ASP.Net الموارد المشغولة | |
1 | تملأخدمة الويب | DataSet بجدول المنتج وترجع عدد السجلات | 250 مرة | 100% | - | |
2 | تملأخدمة الويب | DataSet بجدول المنتج وترجع DataSet | 138 مرة | 54% | 46% | |
3 | يملأ | تطبيق الويب | DataSet مع جدول المنتج وإرجاع Bind DataGrid | 70 مرة | 28% | 72% |
في الاختبار الأول، تقوم خدمة الويب فقط بقراءة السجلات من قاعدة البيانات، وتعبئتها في مجموعة البيانات، وإرجاع عدد السجلات (لاحظ أنها تشغل عددًا قليلاً جدًا من موارد النظام). الموارد مشغولة بالكامل بواسطة SQL Server، والنتيجة غير واضحة.
في الاختبار الثاني، عندما تقوم خدمة الويب بإرجاع مجموعة بيانات، يتم تقليل عدد الطلبات في الثانية بمقدار النصف تقريبًا ويستخدم ASP.Net لإجراء تسلسل لمجموعة البيانات.
في الاختبار الثالث، حيث يقوم تطبيق الويب بربط DataSet بـ DataGrid وإرجاع الصفحة، يتم تقليل عدد الطلبات في الثانية بمقدار ثلاثة أرباع تقريبًا ويتم استخدام موارد النظام هذه بواسطة ASP.Net لربط DataSet بـ DataGrid وإرجاع الصفحة.
من الاختبارات المذكورة أعلاه، يمكننا أن نرى أن ربط DataGrid وتسلسله سيشغل الكثير من موارد النظام. إذا كنت ترغب في تحسين أداء النظام، فأنت بحاجة إلى تحسين البنية.
1. افصل العمليات على قاعدة البيانات عن الصفحة وضعها في طبقة ثبات مستقلة.
وبهذه الطريقة، يتم عرض البيانات كجدول من خلال DOM أو XSLT على جانب العميل، لتحل محل عمل الربط الخاص بـ DataGrid على جانب الخادم، مما يقلل الضغط على الخادم بشكل كبير. ويحصل العميل على البيانات من طبقة الثبات من خلال AJAX، مما سيؤدي إلى تحسين تجربة المستخدم.
2. افصل الصفحة تمامًا عن البيانات حتى يمكن استخدام ذاكرة التخزين المؤقت.
ستظل بعض الصفحات التي تطبق AJAX تقرأ البيانات الأولية، لذا لا يمكن تخزين الصفحة مؤقتًا. هذه الصفحات بشكل عام أكثر تعقيدًا وتشغل موارد أكثر من الصفحات العادية. إذا كان من الممكن استخدام ذاكرة التخزين المؤقت، فسيتم تحسين أداء النظام بشكل أكبر.
من خلال النقطتين المذكورتين أعلاه، يمكن مضاعفة أداء ASP.Net تقريبًا.
يمكنك اختباره بنفسك، أو زيارة نموذجنا www.BizStruct.cn .