У меня есть сайт (http://dev2.liquor.com), который загружается очень быстро, когда я удаляю рекламодателей и скрипты отслеживания, которые предоставляют нам наши партнеры. Конечно, нам нужно уменьшить время загрузки страницы с 6 секунд до 1 секунды, и я вижу, что это 100% все наши внешние js-файлы для отслеживания партнеров, рекламы и т. Д.
Я бился головой об стену, пытаясь найти альтернативные способы загрузки / сжатия / обслуживания множества js, которые пользователь должен загрузить. Я могу легко сжать / минимизировать свой, но кому-то другому, которого нет на нашем сервере, становится трудно это сделать.
Лучшее, что я могу сделать, это получить C по YSlow, и каждое предложение, которое они мне дают, относится к моим дурацким js-скриптам отслеживания!
Думаю, основная проблема - это отслеживание (http://pastebin.com/faMDGrrs), который я вижу в строке состояния, вызывает очень долгую загрузку сайта. Мысли о том, как с этим бороться?
Можно ли вообще управлять сторонними скриптами на моем веб-сайте?
Любая помощь будет принята с благодарностью.
Вот несколько клиентских JS, которые я собрал (на основе фрагмента асинхронного отслеживания Google Analytics), который позволит вам асинхронно загружать внешние Javascripts:
<script type="text/javascript">
(function() {
var scripts = new Array(
'external.domain.com/script1.js',
'external.domain.com/script2.js',
'../script1.js',
'./script2.js',
'/script3.js'
);
if ( scripts.length )
{
for ( var i = 0; i < scripts.length; i++ )
{
var asynchronous = document.createElement('script');
asynchronous.type = 'text/javascript';
asynchronous.async = true;
if (
scripts[i].substring(0, 1) != '/' &&
scripts[i].substring(0, 1) != '.'
) {
// assume external domain (enforce protocol)
asynchronous.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + scripts[i];
} else {
// assume relative URI
asynchronous.src = scripts[i];
}
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(asynchronous, s);
}
}
})();
</script>
Помещение сторонних скриптов в iframe
может быть альтернативой.
Здравый смысл заключается в том, что iframe имеет высокую стоимость (с точки зрения нагрузки), но если его стоимость меньше, чем стоимость загрузки сторонних элементов, вы можете попробовать.
Вы, наверное, сделали большую часть описанного Вот, но в любом случае это хороший ресурс.