1. تحليل رمز الإعلان
تستخدم العديد من أنظمة الإعلان عن الطرف الثالث مستندًا لتحميل الإعلانات ، مثل رابط إعلانات JavaScript التالي.
نسخة الكود كما يلي:
<script type = "text/javaScript" src = "http://gg.5173.com/adpolestar/5173/
؛ AP = 2EBE5681_1BA3_4663_FA3F_E73D2B83FBDC ؛ CT = JS ؛ PU = 5173 ؛/؟ "> </script>
يرجع طلب JavaScript هذا قطعة من الرمز مثل هذا:
نسخة الكود كما يلي:
document.write ("<a href = 'http: //gg.5173.com/adpolestar/wayl/ ؛" +
"AD = 6FF3F844_33E6_86EE_3B96_D94C1CF1AEC4 ؛ AP = 2EBE5681_1BA3_4663_FA3F_E73D2B83FBDC ؛" +
"pu = 5173 ؛/؟ http: //www.7bao.com/g/xlsbz/index 'target =' _ blank '> <img src ='" +
"http://html.5173cdn.com/market/yunyinga/xly132.gif '" +
"Border = '0' /> </a>") ؛
هذا النوع من طريقة التحميل التي تبدو قليلاً 2 ، لكن لا يمكنك تعديلها لأنها طرف ثالث. بالإضافة إلى ذلك ، أضاف الكود وظيفة الإحصائيات. سيتم حساب رابط إعلان JavaScript أعلاه مرة واحدة في كل مرة يطلبه. يحتوي الرمز الذي تم إنشاؤه أيضًا على وظيفة إحصائيات النقر ، مما يعني أنه يجب تحميله بهذه الطريقة.
يتم مزامنة document.write أثناء عرض الصفحة. يجب أن تنتظر حتى يتم تنزيل رمز JavaScript وتنفيذ المستند. يتم تنفيذ الكتابة قبل تقديم المحتوى التالي. إذا كان هناك العديد من الإعلانات ، فسوف يتسبب ذلك في حظر الصفحة ، خاصةً إذا تم إدخال العديد من الإعلانات ذات أحجام الصور الأكبر على الشاشة الأولى للصفحة. سيكون وضع الحظر واضحًا وخطيرًا تمامًا ، مما يجعل المستخدمين يشعرون أن صفحة الويب الخاصة بك بطيئة للغاية.
2. إعادة كتابة document.write
من أجل تجنب الانسداد ، لا يمكن تنفيذ طريقة write.write أثناء عرض الصفحة. يجب أن تجد طريقة لجعل رمز إعلان JavaScript ينفذ بعد أن تكون شجرة DOM جاهزة. ومع ذلك ، بعد أن تكون شجرة DOM جاهزة ، سيتم إعادة تقديم الصفحة بأكملها ، وهو أمر غير ممكن. على الرغم من أن document.write هي طريقة أصلية للمتصفح ، يمكنك أيضًا تخصيص طريقة للكتابة فوق الطريقة الأصلية. قبل تحميل رمز إعلان JavaScript ، أعد كتابة المستند. الكتابة ، انتظر حتى يتم تحميله وتنفيذه قبل تغييره مرة أخرى.
3. تأخير تحميل رمز JavaScript
الخطوة الرئيسية أعلاه هي تأخير تحميل رمز JavaScript. كيف تنفذها؟ حاول أولاً إعادة كتابة سمة نوع البرنامج النصي ، مثل تعيين النوع إلى خاصية مخصصة "Type/Cache" ، ولكن بهذه الطريقة ، ستظل معظم المتصفحات (لن تنزيل Chrome) تنزيل هذا الرمز ، ولكن لن يتم تنفيذه. سيتم تنزيل مثل هذا الرمز أثناء عرض الصفحة. إعادة كتابة نوع البرنامج النصي لا يمكن تحقيق التحميل المتأخر الحقيقي. على الأكثر ، يمكن أن يتم تحميله فقط ولكن لا يتم تنفيذه ، وهناك مشكلات توافق.
ضع علامة البرنامج النصي في علامة TextArea وقراءة محتوى TextArea عندما تحتاج إلى تحميل. وبهذه الطريقة ، يمكنك إدراك التحميل الحقيقي للسيناريو. هذه الطريقة بفضل محلول Yu Bo Bigrender (خارج الجدار).
نسخة الكود كما يلي:
<viv>
<textarea style = "display: none">
<script type = "text/javaScript" src = "http://gg.5173.com/adpolestar/5173/
؛ AP = 2EBE5681_1BA3_4663_FA3F_E73D2B83FBDC ؛ CT = JS ؛ PU = 5173 ؛/؟ "> </script>
</textarea>
</div>
تأخير تحميل البرنامج النصي وإعادة كتابة المستند. فيما يلي تطبيق الكود:
نسخة الكود كما يلي:
/**
* إعادة كتابة المستند. الكتابة لتنفيذ برنامج التحميل غير المحظور
* @param {dom jould} textarea element
*/
var loadscript = function (elem) {
var url = elem.value.match (/src = "([/s/s]*؟)"/i) [1]
الوالدين = elem.parentnode ،
// cache document.write
docwrite = document.write ،
// قم بإنشاء برنامج نصي جديد للتحميل
script = document.createElement ('script') ،
Head = document.head ||
document.getElementsByTagName ('head') [0] ||
document.documentElement ؛
// rewrite document.write
document.write = function (text) {
parent.innerhtml = text ؛
} ؛
script.type = 'text/javaScript' ؛
script.src = url ؛
script.onerror =
script.onload =
script.OnReadyStateChange = function (e) {
e = e || window.event ؛
if (! script.readyState ||
/loadedoutComplete/.test(script.readyState) ||
e === 'خطأ'
) {
// استعادة المستند الأصلي
document.write = docwrite ؛
head.removechild (script) ؛
// قم بإلغاء تثبيت الأحداث وفصل مراجع DOM
// حاول تجنب تسرب الذاكرة
الرأس =
الوالدين =
elem =
السيناريو =
script.onerror =
script.onload =
script.OnReadyStateChange = null ؛
}
}
// تحميل البرنامج النصي
head.insertbefore (script ، head.firstchild) ؛
} ؛
4. نسخة محسنة من تحميل الصورة
هل يمكن تحسينه بشكل أكبر من خلال تنفيذ تحميل الكسل الكسول غير المحظور لرمز إعلان JavaScript؟ إذا لم يظهر الإعلان على الشاشة الأولى ، فهل يمكن استخدامه لتأخير الحمل مثل تحميل التأخير المعتاد للصور؟ الجواب نعم. لقد قمت بتوسيع المكون الإضافي Lazy Loading للصورة التي كتبتها من قبل ، وقمت بتغيير طريقة تحميل الصورة الأصلية (استبدال SRC) إلى طريقة loadscript أعلاه لتحقيقها. بالطبع ، ستظل مثل هذه التعديلات مشكلة. إذا كان هناك العديد من الصور ويتم تنفيذ loadscript في وقت واحد ، والوثيقة. الكتابة هي طريقة عالمية ، فلا يمكن ضمان عدم التأثير على B عند التحميل A. يجب تحميلها واحدًا تلو الآخر ، بحيث لا يمكن تحميل B إلا بعد تحميل A. A.
خامسا التحكم في قائمة الانتظار
لكي يتم تحميل رموز إعلانات JavaScript بالترتيب ، هناك حاجة إلى قائمة انتظار للتحكم في التحميل. لذا فإن رمز التحكم في قائمة الانتظار البسيط التالي متاح أيضًا:
نسخة الكود كما يلي:
var loadqueue = [] ؛
// انضم إلى القائمة
Queue var = function (data) {
loadqueue.push (البيانات) ؛
if (loadqueue [0]! == 'Runing') {
dequeue () ؛
}
} ؛
// شطب
var dequeue = function () {
var fn = loadqueue.shift () ؛
if (fn === 'Runing') {
fn = loadqueue.shift () ؛
}
إذا (fn) {
loadqueue.unshift ('runing') ؛
fn () ؛
}
} ؛
يرجى الرجوع إلى مقالة المقارنة الخاصة بتأخير الصورة لوادر: http://www.vevb.com/article/50685.htm