Назад | Перейти на главную страницу

Уменьшение загрузки скриптов рекламодателей

У меня есть сайт (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 имеет высокую стоимость (с точки зрения нагрузки), но если его стоимость меньше, чем стоимость загрузки сторонних элементов, вы можете попробовать.

Вы, наверное, сделали большую часть описанного Вот, но в любом случае это хороший ресурс.