2014-09-11 2 views
7

Недавно я заметил некоторые проблемы с производительностью в javascript-коде сайта. После некоторого профилирования я обнаружил, что проблема заключается в коде Marketo Munchking, который используется для отслеживания событий. Похоже, что в последнее время они изменили свой JS-код для отправки синхронного http-запроса для каждого звонка до Munchkin.munchkinFunction. Соответствующий фрагмент кода:Marketo Munchkin синхронные запросы ухудшают производительность JS

a=new XMLHttpRequest;a.open("GET",b,!1); ... a.send(); 

Я открыл билет с Marketo, но пока они не исправить свой код, я искал обходной путь. Я думал о нескольких:

  1. Есть ли способ подключить их код js, чтобы заставить XMLHttpRequest быть асинхронным?
  2. Безопасно ссылаться непосредственно на старые версии их сценариев, например //munchkin.marketo.net/143/munchkin.js. Я тестировал его, и он работает, но, может быть, я чего-то не хватает.

Есть ли еще обходные пути? Любую мысль оценивают.

UPDATE:

Только что получил ответ от поддержки Marketo. Они признают, что звонки действительно синхронны, но они утверждают, что это единственный способ не потерять информацию. Думаю, они думают о случае, когда звонок до Munchkin.munchkinFunction сделан непосредственно перед перенаправлением. Я не согласен с ними и попрошу их предоставить альтернативу. В то же время я использую старую версию своего кода.

UPDATE # 2:

Есть еще один ответ от своей команды поддержки, сказали мои идеи хороши, но они не могут реализовать их прямо сейчас, и они надеются, что один из разработчиков будут забрать их когда-нибудь ... Во всяком случае, я создал idea in the Marketo community.

ответ

11

Обновление (октябрь 2015 г.): эта функция теперь задокументирована here.

Я просто пошел по новой версии кода Манчкин (150) и нашел следующую нелегальную параметр:

Munchkin.init('XXXXXX', {asyncOnly: true}); 

Я попробовал это, и это делает работу - все HTTP-запросы теперь асинхронные.

+0

Спасибо, эти ошибки становились разочаровывающими! – Thomas

+0

Я тоже наткнулся на это, но я не могу найти, что за плюсы/минусы за то, что оно было ложным и истинным. Очевидно, что ваши запросы теперь действительно асинхронны, но почему здесь значение false? – kamelkev

0

Вы определенно используете асинхронную версию кода отслеживания? Если вы посмотрите в своем администраторе Marketo, в разделе «Код отслеживания» есть раскрывающийся список, чтобы выбрать тип кода отслеживания - убедитесь, что он включен в асинхронном режиме, а затем используйте этот конкретный блок сценариев на вашем сайте.

Кроме того, если вы посмотрите в разделе «Сундук с сокровищами» в администраторе, есть возможность включить бета-код Munchkin - возможно, попробуйте, если вышеуказанное не работает.

+0

Определенно асинхронный код. Я попробую бета-код, но я только что получил ответ от поддержки Marketo. См. Мой обновленный вопрос. – Tzach

+0

Хмм, это немного из-за этого, вам придется следить за этим. удачи! – michaelroper

+0

Вы не можете выбрать асинхронный код отслеживания из инструмента администрирования Marketo. Говорят, что он асинхронный, но на самом деле это не так. Он по-прежнему будет пытаться обрабатывать клики ссылок как синхронные вызовы, которые также не будут учитывать тайм-аут «clickTime» по умолчанию 350 миллисекунд, указанный в их документах.Вы должны явно указать «asyncOnly: true». Их фрагмент кода JavaScript заставлял наши веб-свойства занимать 6 + секунд, когда пользователь нажимал на ссылку, а также запускал всплывающие блокираторы всякий раз, когда мы пытались открыть ссылку на новой вкладке. – user1212241

 Смежные вопросы

  • Нет связанных вопросов^_^