9
votes

Comment pouvons-nous garder OpenX à partir de bloquer la charge de la page?

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.

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?


5 Réponses :


5
votes

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).

acclamations

Lee


2 commentaires

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.



5
votes

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.

Comment l'utiliser?

  1. Ajoutez votre code monoPagecall vers la fin de votre code HTML
  2. Ajouter ce code sous le code SPC.
  3. Après une demi-seconde ou plus, votre code OPENX doit être prêt et le code ci-dessous mettra les bannières dans les divs spécifiés.
  4. Oh, oui, vous devez ajouter à votre code HTML quelques divs en tant que détenteurs de place pour vos bannières. Par défaut, ces bannières sont définies avec la classe CSS "masquée" qui masque totalement les divs (avec visibilité, affichage et hauteur). Ensuite, une fois que la bannière d'une DIV donnée est chargée avec succès, nous supprimons la classe cachée et la div (et la bannière de) deviennent visibles.

    Utilisez à vos risques et périls! :) espérons que cela aide xxx


3 commentaires

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 ;-)



1
votes

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: xxx pré>

Ç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>


0 commentaires

1
votes

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);
      }
   });
}


0 commentaires

1
votes

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.

Il prend une modification manuelle de leur code d'annonce. Leur exemple de la manière dont les balises d'annonce devraient finir par: xxx


1 commentaires

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.