Nous utilisons OpenX pour servir des annonces sur un certain nombre de sites. Si le serveur OpenX a des problèmes, cependant, il bloque les charges de la page sur ces sites. Je préférerais que les sites échouent gracieusement, c'est-à-dire charger les pages sans les annonces et les remplir lorsqu'ils deviennent disponibles. P>
Nous utilisons le appel unique , Et nous fournissons la taille explicite des divs dans CSS afin qu'elles puissent être aménagées sans leur contenu, mais en chargement toujours le script bloque la charge de la page. Existe-t-il d'autres meilleures pratiques pour accélérer les pages avec OpenX? P>
5 Réponses :
Nous chargons nos annonces dans des iframes pour éviter le problème que vous rencontrez. Nous avons la taille de la taille et l'iframe de la même manière, avec l'iframe pointant vers une page qui contient simplement la section annonceuse (vous pouvez transmettre la zone et les autres options requises comme paramètres à cette page). P>
acclamations p>
Lee p>
Chargement de l'annonce dans un iframe a-t-il des inconvénients tels que la perte de contexte? (c'est-à-dire que l'annonce ne peut pas "voir" le reste de la page). Ou passez-vous des paramètres de contexte requis dans l'URL iFrame?
Nous ajoutons des mots-clés et un contenu à la page (non visible de la page extérieure) ainsi que l'extrait de l'extrémité, de sorte que s'ils changent l'URL de référence, ils obtiennent un contenu pertinent.
Nous sommes lazy-charger le code de Openx. Au lieu de mettre l'appel d'une seule page en haut de la page, nous le mettons en bas. Une fois la page chargée, l'appel obtiendra les données de bannière et un code personnalisé ajoutera les bandes bonnes dans les zones correctes.
Le code ci-dessous nécessite un DOM approprié. Si vous avez JQuery, Domassistant, Flowjs, etc., le DOM devrait être corrigé pour vous. Ce code fonctionnera avec des bannières normales avec des images, Flash ou HTML. Cela peut ne pas fonctionner dans certains cas comme lors de l'utilisation de bannières des fournisseurs externes (Adform, etc.). Pour cela, vous devrez peut-être pirater le code un peu. P>
Comment l'utiliser? P>
Utilisez à vos risques et périls! :) espérons que cela aide forte> p>
Pourriez-vous fournir un échantillon de ce code personnalisé? J'ai joué avec remplacer la fonction Document.Write, mais j'ai eu des problèmes de chargement du contenu dans des conteneurs appropriés car nous avons plusieurs bannières sur la même page.
Rafa, est le code personnalisé quelque chose comme ceci: jqueryad.web2ajax.fr ? Nous avons constaté que récemment mais que je ne l'ai pas encore mis en place comme un test.
PJMORSE> Je viens de réaliser que je n'ai jamais répondu à votre commentaire et je viens de mettre à jour la réponse. Je me demande si vous avez un type de notification. Sinon, voici un commentaire "Ping" / "Poke", juste au cas où ... un an plus tard ;-)
Après @rafa Excellente réponse, j'utilise ce code pour invoquer les bannières OpenX après la charge de la page. J'utilise aussi JQuery et j'ai dû ajouter un nouvel appel de remplacement pour le "document.write" que les bannières flash utilisent et le remplaçaient par "$ ('#" + odiv.id + "'). Ajoutez" à la place. J'utilise un appel "my_openx ()" personnalisé, pour remplacer "oa_show ()". Ma zone de bannières appelée par la zone_id et sont enveloppées à l'intérieur d'une div, comme ceci: Ça fonctionne :) p> <script type="text/javascript">
$is_mobile = false;
$document_ready = 0;
$(document).ready(function() {
$document_ready = 1;
if( $('#MobileCheck').css('display') == 'inline' ) {
$is_mobile = true;
//alert('is_mobile: '+$is_mobile);
}
});
function wm_openx($id) {
if($is_mobile) return false;
if(!$document_ready) {
setTimeout(function(){ wm_openx($id); },1000);
return false;
}
if(typeof(OA_output[$id])!='undefined' && OA_output[$id]!='') {
var flashCode,
oDIV = document.getElementById('openx-'+$id);
if (oDIV) {
// if it's a flash banner..
if(OA_output[$id].indexOf("ox_swf.write")!=-1) {
// extract javascript code
var pre_code_wrap = "<script type='text/javascript'><!--// <![CDATA[",
post_code_wrap = "// ]]> -->";
flashCode = OA_output[$id].substr(OA_output[$id].indexOf(pre_code_wrap)+pre_code_wrap.length);
flashCode = flashCode.substr(0, flashCode.indexOf(post_code_wrap));
// replace destination for the SWFObject
flashCode = flashCode.replace(/ox\_swf\.write\(\'(.*)'\)/, "ox_swf.write('"+ oDIV.id +"')");
flashCode = flashCode.replace(/document.write/, "$('#"+ oDIV.id +"').append");
// insert SWFObject
if( flashCode.indexOf("ox_swf.write")!=-1 ) {
//alert(flashCode);
eval(flashCode);
//oDIV.removeClass('hidden');
}// else: the code was not as expected; don't show it
}else{
// normal image banner; just set the contents of the DIV
oDIV.innerHTML = OA_output[$id];
//oDIV.removeClass('hidden');
}
}
}
//OA_show($id);
}
</script>
Je cherchais cela pour charger la publicité de mon serveur OpenX uniquement lorsque la publicité doit être visible. J'utilise la version iframe de OpenX qui est chargée dans une DIV. La réponse me met ici sur le point de résoudre ce problème, mais la solution postée est un peu trop simple. Tout d'abord, lorsque la page n'est pas chargée du sommet (au cas où l'utilisateur entre dans la page en cliquant sur 'Back') Aucune des divs ne sont chargées. Donc, vous aurez besoin de quelque chose comme ceci:
function lazyload(){ var wt = $(window).scrollTop(); //* top of the window var wb = wt + $(window).height(); //* bottom of the window $(".ads").each(function(){ var ot = $(this).offset().top; //* top of object (i.e. advertising div) var ob = ot + $(this).height(); //* bottom of object if(!$(this).attr("loaded") && wt<=ob && wb >= ot){ $(this).html("here goes the iframe definition"); $(this).attr("loaded",true); } }); }
OpenX a une documentation sur la manière de rendre leurs étiquettes chargez de manière asynchrone: http://docs.openx.com/ad_server/adtagguide_synchjs_implenting_async.htmlllement_async.html
i Je l'ai testé, et cela fonctionne bien dans le chrome / Firefox actuel. P>
Il prend une modification manuelle de leur code d'annonce. Leur exemple de la manière dont les balises d'annonce devraient finir par: p>
Hé, c'est une bonne nouvelle! Je n'ai pas travaillé avec OpenX depuis plus de 2 ans, mais il est bon de voir qu'ils rattrapent des performances comme celle-ci.
Voir Stackoverflow.com/questions/3106782/openx-aysnc-tags