it-swarm.asia

هل يجب تقديم جافا سكريبت المشار إليه في قسم الرأس من نفس اسم المضيف الذي يحتوي عليه المستند الرئيسي؟

كنت على انطباع بأنه للحصول على أفضل أداء ، يجب التعامل مع Javascript على أنه محتوى ثابت ويتم تقديمه من مجال بدون ملفات تعريف الارتباط إلى جانب ملفات CSS والصور وما إلى ذلك.

لكن Google تقول هنا: لا تخدم ملفات JS الخارجية التي تم تحميلها مبكرًا من نطاق cookieless

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

حتى الآن أنا في صراع. لست واضحًا بشأن معنى "اللازمة لبدء تشغيل الصفحة".

عادةً ما يكون لديّ مرجعان JavaScript ، يتم تقديم JQuery من ajax.googleapis.com وملف master.js الذي يحتوي في الغالب على معالجات الأحداث في دالة $ (document) .ready (). هل هذا ضروري لبدء تشغيل الصفحة؟

بالنظر إلى الخيارات المتاحة ، (ajax.googleapis.com ، نطاق ثابت بدون كوك ، اسم مضيف أصلي) أين يجب أن يتم تقديم JavaScript؟

12
James Lawruk

حتى الآن أنا في صراع. لست واضحًا بشأن معنى "اللازمة لبدء تشغيل الصفحة".

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

على سبيل المثال ، إذا ذهبت إلى http://www.weather.com/ ، يمكنك أن ترى أن الأشخاص الرائعين قرروا استخدام بعض جافا سكريبت السحر لتوفير تلميح لنموذج البحث عن الطقس. بمعنى آخر. تظهر الكلمات Enter Zip, City or Place (e.g. Disney World) في حقل إدخال النص. لسوء الحظ ، هناك تأخير بسيط عند تحميل الصفحة ، على الأقل في نهايتي. لذلك ، إذا كانت الصفحة بطيئة بدرجة كافية ليتم تحميلها وكنت بسرعة كافية لبدء الكتابة في إدخال النص قبل تنفيذ JavaScript - وهو لا امتداد - يمكن فك مدخلاتك بواسطة جافا سكريبت التي تضع النص بشكل عمياء على النص في مربع الإدخال.

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

بالنظر إلى الخيارات المتاحة ، (ajax.googleapis.com ، نطاق ثابت بدون كوك ، اسم مضيف أصلي) أين يجب أن يتم تقديم JavaScript؟

لا يمكن الإجابة عن هذا دون معرفة ما يفعله JavaScript لديك. أيضًا ، كما يشير bpeterson76 ، يعتمد ذلك على الموقف المحدد لموقعك. بمعنى آخر. ما حجم الصفحة؟ ما مدى تلبية طلب اجتماع المضيف الخاص بك؟ كم عدد ملفات CSS والصور وما إلى ذلك؟ كم عدد الموارد الخارجية التي يتم تحميلها؟

اعتمادًا على موقفك المحدد ، قد يكون هذا تحسينًا مبكرًا.

5
George Marian

القاعدة "أي شيء مطلوب قبل أن تبدأ الصفحة في التقديم يجب أن يكون من نفس الخادم" تنطبق عمومًا على your الخوادم أو الموارد الأخرى الأصغر - الحالات التي قد يستغرق فيها البحث عن DNS جزءًا ملحوظًا من الثانية (والتي يمكن أن تضيف ما يصل بسرعة إذا كانت كائناتك منتشرة حول العديد من المجالات). مع وجود موارد عامة شائعة مثل ذاكرة التخزين المؤقت لـ jQuery والمكتبات الأخرى في Google ، هناك فرصة جيدة لأن يكون متصفحك قد قام بالفعل بالبحث عن DNS اليوم (لأن المواقع الأخرى تشير إلى المحتوى من تلك الخدمة) وربما تحتوي على ملف في ذاكرة التخزين المؤقت أيضًا يجب إجراء النقل (أو في حالة تقديم طلب ، فقد يسترجع الرد القصير "304 - غير المعدل"). حتى إذا كانت هناك حاجة إلى تنزيل كامل للعنصر ، فستكون شبكة توصيل المحتوى من Google أسرع لمعظم المستخدمين من عملية النطاق الأصغر.

قاعدة واحدة ذات صلة: يجب الإشارة إلى الكائنات غير المطلوبة للوظيفة الصحيحة للصفحة (كما يراها المستخدم) في وقت متأخر قدر الإمكان في استجابة HTTP الرئيسية. على سبيل المثال ، أشياء مثل النصوص المطلوبة لخدمات الإعلان/الإحصائيات (مثل Google Analytics وأمثالها) - امنح المستخدم المحتوى الخاص بك في أسرع وقت ممكن ، ثم قم بتحميل العناصر الأساسية التي تهمك فقط. لقد حظرت بعض خدمات الإعلانات/الإحصائيات (عن طريق تعيينها على 127.0.0.1 في ملف المضيفين الخاص بي) لأنها غالباً ما تكون بطيئة للغاية والمواقع التي تشير إليها مبكراً فقط أعطني صفحة فارغة أثناء انتظار البرامج النصية بدلاً من ذلك من الإشارة إليهم في وقت متأخر حتى أتمكن من قراءة المحتوى أنا هناك لفي حين أن الأشياء الأخرى تتدحرج في الخلفية.

تعد فائدة نطاق أقل لملفات تعريف الارتباط للمحتوى الثابت مسألة ذات أهمية. إذا كان كل ما لديك هو معرّف جلسة واحدة من 10 بايتات في ملفات تعريف الارتباط وعشرة آلاف زائر يوميًا يطلبون ~ 20 كائنًا ثابتًا في الزيارة الواحدة ، فأنت بذلك تقوم فقط بحفظ عرض النطاق الترددي 118Mbyte شهريًا (20 * 20 * 10000 * 31/1024/1024). من ناحية أخرى ، إذا كان موقعك يحتفظ بقيمة أو كيلوبايت من الأشياء في ملفات تعريف الارتباط ، فقد يكون الاختلاف أكثر أهمية ، خاصة إذا كان أي من المستخدمين لديك يصل إلى الموقع عبر اتصالات بطيئة (أي GPRS عبر الربط إلى جوال ، أو أكثر من - وصلة wifi مزدحمة في منطقة تداخل عالية) أو إذا كنت تحصل على ملايين الزيارات يوميًا.

للتلخيص ، بالنسبة للبرامج النصية التي يجب تحميلها قبل أن تتمكن الصفحة من تقديم تفضيلاتي ستكون:

  1. ajax.googleapis.com ، أو ما شابه ذلك
  2. اسم المضيف الأصلي لصفحة الدعوة
  3. ثابت أقل مجال الكعكة

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

4
David Spillett

تدير Google شبكة محتوى ضخمة موزعة في جميع أنحاء العالم والتي تجعل المحتوى أقرب إلى المستخدم من أي خادم واحد يحتمل أن تشغّله (فكر في Akami ، لكن مملوكة من قِبل Google) لذلك ، فمن وجهة نظر السرعة ، من المنطقي أن ستقوم Google بإيصال ملفك إلى المستخدم بشكل أسرع من الخادم المحلي الخاص بك ... إلا إذا كان قريبًا جدًا من خادمك الشخصي.

لقد مر هذا السؤال حوله في Stackoverflow ، ويبدو أن الإجابة أعلاه هي الإجماع دائمًا. ولكن من وجهة نظر واقعية ، فإن المكاسب التي تحققت من خلال استضافة واحدة مقابل الأخرى ستكون ضئيلة إلى حد ما على المدى الطويل. ستحصل على فوائد أفضل بكثير من التقليل من إجمالي طلبات http وتحسينها وتقليلها مقارنةً بما ستتمخّص من تحديد مكان الأشياء فعليًا. في المواقف التي يبدأ فيها الأمر (قمت بعمل حيث تم تحميل الصفحة ما يزيد عن 1.5 مليون مرة/يوم ، لذا فإن التحسين بمقدار 5 آلاف يعني 5 مجموعات في توفير عرض النطاق الترددي) عادة ما يكون هناك فريق من صناع القرار المكلفين بتدقيق هذه القرارات.

أنا شخصياً أستضيف غوغل عادةً لسبب وحيد هو أنهم سوف يقدمون لي أحدث نسخة من ما أبحث عنه.

1
bpeterson76

أحد الأشياء المهمة التي يجب تذكرها هو أن المتصفحات لها حدود على عدد الموارد التي سيتم تنزيلها في وقت واحد من نفس المجال ، وعادة ما يتراوح ما بين 2 و 6 حسب المستعرض. يتيح استخدام مجال مختلف للمتصفح تنزيل المزيد من الأشياء في وقت واحد من نطاقك.

لذا فإن أفضل حل هو استخدام CDN شائع مثل ajax.googleapis.com حيث أنه لا توجد ملفات تعريف ارتباط. من المحتمل أن يكون المستخدم قد قام بالفعل بإجراء بحث DNS وربما قام بتخزين المورد مؤقتًا. يتم تحسين CDN's للسرعة وربما يكون لديه خادم قريب من المستخدم الخاص بك.

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

إذا كان لديك عدد قليل من الموارد (ملف جافا سكريبت واحد مخصص فقط) وعدد قليل من ملفات تعريف الارتباط (مجرد معرف جلسة صغيرة) المضيف من نفس المجال.

موارد جيدة:

http://www.phpied.com/free-falling-waterfalls/

http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/

http://developer.yahoo.com/performance/rules.html

1
Adam

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

  • التحقق من صحة النموذج
  • التنقل المستند إلى JavaScript (غير مثالي على أي حال)
  • إذا كان التصميم يعتمد على JavaScript
  • إذا تم استخدام جافا سكريبت أو مكتبة (مثل jQuery) لتعديلات DOM المهمة

و Yahoo إرشادات أداء YSlow كمرجع.

1
Taylor Edmiston