2014-09-11 12 views
7

Recentemente ho notato alcuni problemi di prestazioni nel codice javascript del mio sito. Dopo alcuni profili ho scoperto che il problema è il codice Marketo Munchking che uso per tenere traccia degli eventi. Ultimamente hanno cambiato il loro codice JS per inviare la richiesta HTTP sincrona per ogni chiamata a Munchkin.munchkinFunction. Il frammento di codice di riferimento è:Le richieste sincrone di Marketo Munchkin danneggiano le prestazioni JS

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

Ho aperto un biglietto con Marketo, ma fino a quando non risolvere il loro codice, sto cercando una soluzione. Ho pensato a pochi:

  1. C'è un modo per collegare il codice js per forzare lo XMLHttpRequest in modo asincrono?
  2. È possibile fare riferimento direttamente alle versioni precedenti del proprio script, ad esempio //munchkin.marketo.net/143/munchkin.js. L'ho provato e funziona, ma forse mi manca qualcosa.

Esistono altri rimedi? Ogni pensiero è apprezzato.

UPDATE:

appena ricevuto una risposta dal supporto Marketo. Ammettono che le chiamate sono effettivamente sincrone, ma affermano che questo è l'unico modo per non perdere informazioni. Immagino pensino al caso in cui una chiamata a Munchkin.munchkinFunction viene effettuata appena prima di un reindirizzamento. Non sono d'accordo con loro e chiederò loro di fornire un'alternativa. Nel frattempo sto usando una vecchia versione del loro codice.

UPDATE # 2:

Ha ottenuto un'altra risposta dal loro team di supporto che ha detto che le mie idee sono buone, ma non possono implementare loro in questo momento, e sperano che uno degli sviluppatori li preleverà un giorno ... Comunque ho creato un idea in the Marketo community.

risposta

11

Aggiornamento (ottobre 2015): questa funzione è ora documentata here.

ho appena andato sopra la nuova versione del codice di Munchkin (150) e ho trovato il seguente parametro non documentato:

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

ho provato e non il lavoro - tutte le richieste HTTP sono ora asincrona.

+0

Grazie, quegli errori stavano diventando frustranti! – Thomas

+0

Sono inciampato anche su questo, ma non riesco a trovare quello che i pro/contro sono per averlo come falso contro vero. Ovviamente le tue richieste ora sono veramente asincrone, ma perché il default è falso qui? – kamelkev

0

Stai utilizzando la versione asincrona del codice di monitoraggio? Se guardi nell'amministratore di Marketo, sotto Codice di monitoraggio, c'è un menu a discesa per selezionare il tipo di codice di monitoraggio: assicurati che sia in Asincrono e quindi usi quel particolare blocco di script nel tuo sito.

Inoltre, se si guarda sotto la sezione Treasure Chest nell'admin, c'è un'opzione per abilitare il codice beta Munchkin - forse abilitando la prova che se il precedente non funziona.

+0

Definitivamente il codice asincrono. Proverò il codice beta, ma ho appena ricevuto una risposta dal supporto di Marketo. Vedi la mia domanda aggiornata. – Tzach

+0

hmm, che è un po 'pungente, dovrò fare attenzione a quello. in bocca al lupo! – michaelroper

+0

Non è possibile selezionare l'opzione di codice di monitoraggio asincrono dallo strumento di amministrazione Marketo. Si dice che sia asincrono, ma in realtà non lo è. Tenterà comunque di trattare i clic di collegamento come chiamate sincrone che inoltre non rispetteranno il timeout predefinito "clickTime" di 350 millisecondi specificato nei loro documenti.Devi specificare esplicitamente "asyncOnly: true". Il loro frammento di codice JavaScript stava rendendo le nostre proprietà web di 6+ secondi ogni volta che un utente fa clic su un link e attiva i blocchi dei popup ogni volta che proviamo ad aprire un link in una nuova scheda. – user1212241

Problemi correlati