سؤال

لقد قمت بتطوير حل يعتمد على استدعاء AJAX لاسترداد المعلومات وتحديث صفحة العميل كل 10 ثوانٍ.يعمل هذا بشكل جيد، ولكنني أشعر بالقلق إزاء قابلية التوسع في التعليمات البرمجية، نظرًا لعدد وطول الرؤوس التي يتم تمريرها من العميل إلى الخادم والعودة مرة أخرى.لقد قمت بإزالة عدد من الرؤوس الزائدة من جانب الخادم، ومعظمها مرتبط بـ ASP.NET، والآن أحاول تقليل الرؤوس القادمة من العميل.

المتصفح الذي تستخدمه شركتي هو IE (الإصدار 6، سيتم ترقيته إلى 7 قريبًا).هذا تقريبي للكود الحالي الخاص بي:

var xmlHTTP = new ActiveXObject('Microsoft.XMLHTTP');

xmlHTTP.onreadystatechange = function() {
    if ((xmlHTTP.readyState == 4) && (xmlHTTP.status == 200)) {
        myCallbackFunction(xmlHTTP);
    }
};

xmlHTTP.open('GET', 'myUrl.aspx');

try {
    xmlHTTP.setRequestHeader("User-Agent", ".");
    xmlHTTP.setRequestHeader("Accept", ".");
    xmlHTTP.setRequestHeader("Accept-Language", ".");
    xmlHTTP.setRequestHeader("Content-Type", ".");
} catch(e) {}

xmlHTTP.send();

بالرغم من أنا قد قرأت أنه من الممكن مسح بعض هذه الرؤوس، ولم أجد طريقة للقيام بذلك تعمل في IE6.يؤدي وضعهم إلى NULL إلى استثناء غير متطابق ، لذلك انتهى بي الأمر فقط إلى استبدالهم بـ ". في الوقت الحاضر.هل هناك طريقة أخرى لمسحها أو طريقة بديلة لتقليل رؤوس HTTP المقدمة؟

ويبدو أيضًا أنه لا توجد طريقة لاستبدال رأس "المُحيل" أو تقصيره على الإطلاق.

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

المحلول

ووفقا ل WD المواصفات

<اقتباس فقرة>   

ووsetRequestHeader () طريقة بإلحاق قيمة إذا كان رأس HTTP معينة كوسيطة هو بالفعل جزء من قائمة من رؤوس الطلب.

وهذا هو، يمكنك إضافة الرؤوس فقط، وليس استبدالها.

وهذا لا يتطابق تماما سلوك المتصفح الحالي، ولكن قد يكون من حيث سيرأس المتصفحات، وفي هذه الحالة أي جهود في هذا المجال هي مضيعة للوقت على المدى الطويل. في أي حال السلوك المتصفح الحالي مع تحديد رؤوس متنوع جدا وعموما لا يمكن الاعتماد عليها.

<اقتباس فقرة>   

ويبدو أن هناك أي وسيلة لاستبدال أو تقصير رأس "المرجع" على الإطلاق.

وهذا لن يفاجئني، بالنظر إلى أن بعض الناس misguidedly استخدام "التحويلية" [كذا]، وآلية التحكم بالوصول.

وقد تتمكن من محاولة للتأكد من أن URL الصفحة الحالية لم يكن مفرط طويلة، ولكن لنكون صادقين كل هذه الروائح التحسين من السابق لأوانه بالنسبة لي. مهما فعلت طلبك سوف تدخل ضمن حزمة IP واحد، لذلك ليس هناك gonig أن يكون الفارق في الأداء مرئية كبير.

وربما يكون من المفيد لميبيت (كما ذكر على بلوق التي ترتبط) لمحاولة هذه الاشياء، لأن ميبيت يرسم مبلغ مذهل تماما من حركة المرور، ولكن لتطبيق بسيط على مستوى الشركة وأنا لا أعتقد أن عبر متصفح -و-وكيل اختبار عبء: نسبة المستخدمين النهائيين والفوائد من العبث مع رؤوس يستحق ذلك

نصائح أخرى

وIE 6 والإصدارات الأقدم تستخدم ActiveXObject التي تم إنشاؤها من MSXML.XMLHTTP (مشتقة من الواقع IXMLHTTPRequest )، في حين IE 7 وغيرها من المتصفحات الحديثة مثل موزيلا استخدام كائن جوهري دعا XmlHttpRequest. وربما هذا هو السبب في أنك لا يمكن أن يحدد طلب رؤوس لnull لتنفيذ MSXML ولكن يمكنك الكائن في الصنع.

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

وقال ذلك، أنا الغريب أن أعرف لماذا كنت وضع رؤوس طلب إلى "." بدلا من "" سلسلة فارغة.

سأتخلى عن هذا النوع من التحسينات الدقيقة وأبحث في نموذج الدفع بدلاً من ذلك.عن طريق نقطة البداية:

  • يمكن لـ Flash إنشاء مآخذ توصيل ثابتة، وتوسط الأحداث في جافا سكريبت.
  • يمكنك تنفيذ التدفقات ثنائية الاتجاه عبر HTTP المتزامن (BOSH).يرى http://xmpp.org/extensions/xep-0124.html

عادةً ما يتم إقران كلاهما بخادم XMPP على الواجهة الخلفية.

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