التعليق: يمكن فهم التحميل غير المتزامن على أنه معالجة متزامنة غير متزامنة. في الماضي ، استخدمنا العديد من تقنيات JavaScript للقيام بذلك. الآن نفذت WebKit سمة Async Async لعلامة البرنامج النصي لـ HTML5. يمكن للأصدقاء المهتمين التعرف على ذلك.
(ملاحظة المترجم: يمكن فهم التحميل غير المتزامن على أنه معالجة متزامنة غير محظورة.)أحد الأسباب التي تجعلني متحمسًا تجاه HTML5 هو أنه ينفذ العديد من الميزات التي طال انتظارها في هذه الصناعة. نحتاج دائمًا إلى عرض مطالبات فارغة في مربع الإدخال ، ولكن يتم تنفيذها جميعًا في JavaScript. نريد أيضًا أن تكون الكتلة بأكملها قابلة للنقر ، والتي يتم تنفيذها أيضًا باستخدام JavaScript.
تقوم WebKit الآن بتنفيذ الخاصية غير المتزامنة غير المتزامنة لعلامة البرنامج النصي لـ HTML5. في الماضي ، اعتدنا على استخدام حيل JavaScript المختلفة للقيام بذلك ، ولكن الآن خصائص جديدة تجعل من السهل نسبيًا منع الحجب.
سمات Async - HTML
كما ذكرت سابقًا ، فإن إضافة سمة Async بسيطة للغاية:
<!-حدد Async ، و Onload Callback->
<script async src = "sitescript.js"> </script>
في الواقع ، إذا كان تصميم بنية JavaScript و HTML معقولًا ، فيمكن تحميل 90 ٪ من الحالات عناصر البرنامج النصي بشكل غير متزامن.
تأجيل - سمات HTML
يضيف متصفح Safari سمة تأجيل إضافية
<!-حدد التأجيل ، يكون التأثير مشابهًا لـ Async->
<script defer src = "sitescript.js"> </script>
الفرق بين Async و التأجيل
تشرح مدونة WebKit الرسمية الفرق بين Async و Defer
--------------------------------------
في ظل الظروف العادية ، إذا واجه المستعرض برنامج نصي خارجي عند تحليل ملف مصدر HTML ، فسيتم إيقاف عملية التحليل وسيتم إرسال طلب لتنزيل ملف البرنامج النصي. سيستمر تنفيذ تحليل DOM بعد تنزيل البرنامج النصي وتنفيذه بالكامل. على سبيل المثال:
<script src = myBlockingScript.js> </script>
أثناء عملية التنزيل ، يتم حظر المتصفح من القيام بمهام مفيدة أخرى ، بما في ذلك تحليل HTML ، وتنفيذ البرامج النصية الأخرى ، وعرض تخطيط CSS. على الرغم من أن الماسحات الضوئية المسبقة لـ WebKit يمكنها اكتشاف MultiTreading خلال مرحلة التنزيل ، لا يزال هناك تأخير كبير في الشبكة لبعض الصفحات.
هناك العديد من التقنيات لتحسين سرعة عرض الصفحة ، لكنها تتطلب جميعها مهارات رمز إضافية خاصة بالمتصفح. الآن لا يمكن أن يضطر البرنامج النصي إلى تنفيذ البرامج النصية بشكل متزامن عن طريق إضافة سمات غير متزامنة أو تأجيل. المثال على النحو التالي:
<script async src = "myasyncscript.js"> </script>
<script defer src = "myDeferscript.js"> </script>
لن يتم تنزيل برنامج Async أو Sefer Eanotation Script فورًا دون توقف HTML. كلا الداعمين لعمليات استدعاء الأحداث على حلول لحل التهيئة التي تتطلب تنفيذ البرنامج النصي.
الفرق بين الاثنين هو الفرق في التنفيذ:
سيتم تنفيذ البرنامج النصي ASYNC مباشرة بعد تنزيل ملف البرنامج النصي ، ويجب أن يكون وقت تنفيذه قبل تشغيل حدث تحميل النافذة. هذا يعني أنه من المحتمل ألا يتم تنفيذ البرامج النصية المتعددة المتزامنة بالترتيب الذي تظهر في الصفحة.
في المقابل ، يضمن المستعرض تنفيذ البرامج النصية المؤجلة المتعددة بترتيب حدوثها في صفحة HTML ، وأن وقت التنفيذ هو قبل اكتمال دقة DOM ويتم إطلاق حدث DOMCONTENTERD في المستند.
فيما يلي مثال يستغرق تنزيل ثانية واحدة وثانية لتحليل العمليات الأخرى. يمكننا أن نرى أن تحميل الصفحة بأكمله استغرق حوالي ثانيتين.
المثال نفسه ، ولكن هذه المرة حددنا السمة المؤجلة للنص. لأنه عندما يتم تنزيل البرنامج النصي المؤجل ، يمكن تنفيذ عمليات أخرى بالتوازي ، لذلك يكون أسرع حوالي 1 مرات.
--------------------------------------
التي تدعم المتصفحات Async و تأجيلها
المذكورة أيضًا في المقالة المذكورة أعلاه:
بالإضافة إلى الإصدار الجديد من المتصفح استنادًا إلى WebKit ، دعمت Firefox خصائص التأجيل والواحد لفترة طويلة ، وأضفت سمة Async منذ FF3.6. IE يدعم أيضًا سمة التأجيل ، ولكن لا تدعم سمة ASYNC. بدءًا من IE9 ، سيتم أيضًا دعم سمة Onload.
Aynsc رائع!
كنت سعيدًا جدًا برؤية WebKit تنفذ ASYNC. يعد حظر عنق الزجاجة الأداء الضخم لكل موقع ويب ، والقدرة على تحديد ملفات النصوص مباشرة ، مما لا شك فيه أن التحميل غير المتزامن سيؤدي إلى تسريع صفحات الويب.