Сегодня столкнулся с проблемой: сайт очень долго грузился и прорисовка странички начиналась только после окончания загрузки.
Причина оказалась в следующем: на сайте был вставлен виджет одноклассников и сегодня у этой соцсети были проблемы доступа. и пока рзился их скрипт страничка не отрисовывалась.
Выход прост нужно обернуть код виджета в window.onload:
оригинальный код виджета:
<script>
!function (d, id, did, st) {
var js = d.createElement("script");
js.src = "https://connect.ok.ru/connect.js";
js.onload = js.onreadystatechange = function () {
if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") {
if (!this.executed) {
this.executed = true;
setTimeout(function () {
OK.CONNECT.insertGroupWidget(id,did,st);
}, 0);
}
}}
d.documentElement.appendChild(js);
}(document,"ok_group_widget","50582132228315","{width:250,height:335}");
</script>
измененный код:
<script>
window.onload= function(){
setTimeout(function(){
!function (d, id, did, st) {
var js = d.createElement("script");
js.src = "https://connect.ok.ru/connect.js";
js.onload = js.onreadystatechange = function () {
if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") {
if (!this.executed) {
this.executed = true;
setTimeout(function () {
OK.CONNECT.insertGroupWidget(id,did,st);
}, 0);
}
}}
d.documentElement.appendChild(js);
}(document,"ok_group_widget","50582132228315","{width:250,height:335}");
},3000);}
</script>
Думаю таймаут не обязателен, но я решил подстраховаться. после этого изменения сайт стал грузиться быстро (где то порядка 1-3 секунд) а через 3 секунды начиналась загрузка виджета, которая иногда продолжалась больше 40 секунд! Но теперь тормоза стороннего сайта не мешают...
Комментарии
Может в файл его засунуть?
Ну файл виджета этого,может будет работать и так. И время на загрузку не будет тратиться. Возможно не получиться но это пару секунд