دلیل نوشتن این پست این بود که بیش از یک بار متوجه شدم که قرار دادن دکمه های سرویس های مختلف (به عنوان مثال: VKontakte، فیس بوک، توییتر، همکلاسی ها) در صفحه کد منجر به کندی قابل توجهی در بارگذاری و نمایش صفحه شده است. . این مورد زمانی است که از اتصال جاوا اسکریپت خارجی این سرویس های اجتماعی استفاده می شود.
اگر از دکمه های گرافیکی استاتیک ساده استفاده کنیم، مشکلی وجود ندارد، زیرا این حداقل گرافیک و اسکریپت هایی است که به صورت محلی قرار دارند (نمونه ای از پیاده سازی را می توانید در اینجا مشاهده کنید http://pervushin.com/social-button-for-blog.html). اما ما فقط نمادهای اجتماعی را می بینیم. خدمات، هیچ آماری (چند نفر صفحه ما را "لایک" کرده اند) وجود ندارد. آن ها اگر بخواهیم آمار را نیز ببینیم، باید اسکریپت های خارجی را نیز وارد کنیم. و در اینجا باید در نظر داشت که چند دکمه از این قبیل را متصل کرده ایم، مرورگر باید تعداد زیادی اسکریپت خارجی را دانلود کند، یعنی. اینها اتصالات اضافی به سرورهای خارجی هستند.
برای نشان دادن اینکه اگر صفحه دارای اسکریپت هایی در بخش باشد چه اتفاقی می افتد
، من پیشنهاد می کنم تعدادی از موارد آزمایشی را در نظر بگیریم. من از FireFox 3.6 و FireBug استفاده خواهم کرد.بنابراین:
1) ساده ترین صفحه با یک فایل سبک، دو اسکریپت و سه تصویر:
![](https://i1.wp.com/image1.gif)
![](https://i2.wp.com/image2.gif)
![](https://i0.wp.com/image3.gif)
و در اینجا نمودار بارگذاری آن است:
لطفاً توجه داشته باشید که همه تصاویر تنها پس از بارگیری "طولانی ترین" فایل جاوا اسکریپت بارگذاری می شوند.
من عمداً بارگذاری dummy_css.css و dummy_js.js را طولانی کردم. آنها فقط دو فایل هستند:
dummy_css.php
خواب (2)؛
?>
html، بدنه (
حاشیه: 0;
بالشتک: 0;
}
.img_container (
حاشیه: 0 خودکار؛ عرض: 500 پیکسل؛
}
dummy_js.php
خواب (3)؛
?>
var param = 1;
پس واضح است کهفایل js بارگذاری تمام گرافیک های دیگر را مسدود می کند.
2) همه چیز تقریباً یکسان است، اماساختگی_jsjs از یک میزبان خارجی بارگیری می شود:
وضعیت مشابه قبلی است:
3) بیایید سعی کنیم در بخش تغییر کنیمسر در جاهاییcss وفایل های js (css اکنون بعد از آن می آیدjs):
ما به نمودار بارگذاری نگاه می کنیم:
Js همچنان بارگذاری تصاویر را بدون توجه به میزبانی که از آن بارگذاری شده است مسدود می کند.
4) زمان بارگذاری را افزایش دهیدcss تا 4 ثانیه (کد html مانند موردN3):
5) مورد جالب دیگر:css قبل از آن قرار داردjs، امابارگذاری css بیشتر طول می کشد
در اینجا css از قبل بارگذاری تصاویر را مسدود می کند ...
6) انتقال یکjs داخل< بدن>
واضح است کهساختگی_jsjs فقط سومین تصویر را که در آن قرار دارد بارگیری می کندکد html بعد از آن اما اگربارگذاری css بیشتر طول می کشد، سپس بارگذاری گرافیک ها را مسدود می کند.تصور اینکه اسکریپت های خارجی قابل اتصال می توانند تا حد زیادی سرعت بارگذاری و رندر صفحه را کاهش دهند، سخت نیست، به خصوص اگر سرور راه دور به دلایلی زمان زیادی را برای پاسخگویی نیاز دارد.
قرار دادن اسکریپت های خارجی قبل از بدن>
که بلافاصله خود را نشان می دهد ... همه اسکریپت هایی که بارگذاری آنها برای صفحه حیاتی نیست باید درست قبل از برچسب بسته شدن قرار گیرند.... اما این کار را می توان برای آن دسته از اسکریپت هایی انجام داد که تمام منطق در آنها وجود دارد و هیچ تماس خارجی از کد html وجود ندارد. اگر برخی از توابع از کد html از اسکریپت هایی که هنوز بارگذاری نشده اند فراخوانی شوند، چنین موقعیت هایی باید به روشی خاص مدیریت شوند، زیرا شما باید دانلود را پیگیری کنید
اما یک مشکل دیگر وجود دارد که با یک مثال توضیح می دهم:
اگر js قبلا