بطيئة جدا webresponse تسبب مهلة
-
23-08-2019 - |
سؤال
لدي وظيفة في C # التي جلب حالة الإنترنت عن طريق استرداد XML 64B من صفحة الموجه
public bool isOn()
{
HttpWebRequest hwebRequest = (HttpWebRequest)WebRequest.Create("http://" + this.routerIp + "/top_conn.xml");
hwebRequest.Timeout = 500;
HttpWebResponse hWebResponse = (HttpWebResponse)hwebRequest.GetResponse();
XmlTextReader oXmlReader = new XmlTextReader(hWebResponse.GetResponseStream());
string value;
while (oXmlReader.Read())
{
value = oXmlReader.Value;
if (value.Trim() != ""){
return !value.Substring(value.IndexOf("=") + 1, 1).Equals("0");
}
}
return false;
}
باستخدام Addon باستخدام Mozilla Firefox 3.5 & Firebug، فإنه أظن أنه عادة ما يستغرق 30 مللي ثانية لاسترداد الصفحة ومع ذلك في فرض 500ms ضخمة للغاية، فإنه لا يزال الأمر يتعلق كثيرا. كيف يمكنني تحسين الأداء بشكل كبير؟
شكرا مقدما
المحلول
أنت لا تغلق استجابة الويب. إذا كنت قد أصدرت طلبات إلى نفس الخادم وليس مغلقة أولئك الردود، هذه هي المشكلة.
عصا الرد في using
بيان:
public bool IsOn()
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create
("http://" + this.routerIp + "/top_conn.xml");
request.Timeout = 500;
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
{
while (reader.Read())
{
string value = reader.Value;
if (value.Trim() != "")
{
return value.Substring(value.IndexOf("=") + 1, 1) != "0";
}
}
}
return false;
}
(لقد صنعت بعض التعديلات الأخرى في نفس الوقت ...)
لا تنتمي إلى StackOverflow