Como mejorar el rendimiento de OpenX

9 Comentarios

OpenX es un servidor de publicidad open source que corre bajo PHP y MySQL. Una de sus grandes ventajas frente a otras aplicaciones de este tipo es que está es gratuita y detrás hay una gran comunidad.

Hasta hace bien poco nunca había trabajado con aplicaciones de este tipo y envergadura por lo que no puedo compararla a otros productos de iguales o similares prestaciones.

Desde hace poco, algo menos de un mes, trabajo para una grande y conocida web de ofertas de ocio al mejor precio como Front-End Developer (queda mejor que maquetador) y entre otras cosas me encargo de la administración del AdServer, el servidor de publicidad. Actualmente estamos mejorando la web con un nuevo diseño y optimizando los tiempos de descarga. Uno de los grandes problemas de la web junto al abuso de javascript (en concreto del framework YUI, Yahoo User Interface) es la lentitud con la que se sirven los banners, hasta el punto que aveces, ni se muestran.
Al investigar los motivos por el cual los banners no se servían correctamente, provocando además una lenta respuesta en la descarga de la web, pude observar que:

  1. Los banners no se cargan o tardan mucho en descargarse cuando en una misma zona se rotan 2 o más banners: El problema reside en el algoritmo que determina que banner mostrar. Para solucionarlo bastará con que ambos banners no tengan la misma prioridad. Si las campañas son de publicidad de pago, por defecto, pone la prioridad en 5, por lo contrario si estas son campañas de promoción interna o gratuitas están tienen una prioridad de 1. Basta con que si tenemos dos campañas de pago un asignarle una prioridad de 3 y la otra de 5. Si tenemos más de 2 campañas deberemos hacer lo mismo, pero en mis pruebas he observado que mejor no rotar con más de dos campañas/banners a la vez. ACTUALIZACIÓN: En la última versión ya no he detectado este error.
  2. Mejor usar iframes (Si el javascript te da problemas):  Si tenemos varias zonas en una misma página y a demás usamos javascript para otras cosas (como AJAX, validaciones, carouseles, etc…) mejor usar iframes para mostrar los banners dado que usando javascript lo único que logramos es que el explorador tenga que realizar más trabajo para renderizar la página y esto se nota mucho en ordenadores modestos (no todo el mundo usa Pentium Dual core con más de 2 GB de RAM). Al usar iframes las llamadas al servidor pasan en otro plano facilitado la descarga de estos. ACTUALIZACIÓN: Los iframes suelen ser pesados y no son nada recomendables. Pero haciendo pruebas  comprobé que el JS de openx causa conflictos con con los JS de la propia página. En concreto una mala programación de los js con YUI 2.0 en los datapikers causaban el mensaje de false en el espacio del banner.
  3. No abusar de las Zonas: Las zonas son los lugares de la web desde donde se llama al banner mediante un iframe, javascript o código PHP (este solo es posible si el AdServer se aloja en el mismo servidor que la web). Cada una de estas zonas tiene un identificador, por lo cual cuantas menos tengamos mejor. Evidentemente, esto es posible si nuestra web es pequeña y tenemos pocas páginas, pero en grandes portales esto es díficil por no decir imposible por que desde marketing te exigirán más zonas.
  4. Crear varios perfiles: Este consejo es en cuanto a la administración del AdServer porque uno de los mayores problemas de OpenX es que no es una aplicación muy usable. El problema sucede cuando tenemos un elevado número de zonas y hemos de enlazar una campaña/banner con una o más zonas. Al intentar listar las zonas, el navegador se puede quedar frito, afortunadamente Firefox antes te preguntara si quieres detener el script. Por esta razón, mejor es crear varios perfiles y crear en cada perfil las zonas asociadas. Entonces te recomiendo por ejemplo crear un perfil para publicidad externa y otro para promociones internas, igual de la misma forma si desde el AdServer gestionas la publicidad para varios sitios, lo mejor es crear un perfil o varios para cada sitio, o idioma del sitio si tu web tiene varios idiomas en diferentes plantillas. ACTUALIZACIÓN: Las últimas versiones son algo más usables.

Con los tres primeros puntos seguro que notarás una mejorara sustancial a la hora de servir los banners, no obstante pueden influir más factores como la capacidad del servidor donde se aloja el AdServer, pero seguro que en muchos casos esto no sea el problema y el problema real sea el propio OpenX que aún le queda mucho por mejorar tanto en redimiento como la administración.

ACTUALIZACIÓN:La mejor solución para evitar la relentización del site por cula de los banners es crear un script que cargue los banners una vez la págian esta cargada. No obstante esto puede hacer que se creen huecos en blanco durante la descarga de la página. A todo esto, pues si tu página hace mucho uso de javascript, mejor usar iframes, pero la mejor solución para mejorar las descarga de los banners es hacer una buena gestión de los recursos y no abusar de los js.

9 response to Como mejorar el rendimiento de OpenX

  1. erm3nda

    Yo me puse a darle vueltas al invento… y lo cierto es que no es muy “usable” pero si potentisimo.

    Cierto es que depende del modo a mostrar tarda mucho, o mas. La administracion tiene una gestion algo mas lenta que el funcionamiento de los banners.

    Yo algo que recomiendo, si nadie se entera/opone, es usar la cache en el servidor a 15 minutos o 2 o asi… esto reducira las peticiones a OpenX mostrando el banner existente… mejorando increiblemente. A 2 minutos, significaria que el lector, al pulsar otro enlace con otra informacion, gracias a la corta cache, obtendra un nuevo banner… no influyendo asi en la rotacion de los contenidos publicitarios.

    Una cosa que me gustaria preguntar… es como mostrar una zona, con varios banners… porque no he tocado todos los botones, y creo que alguno debe conseguirlo. No quiero que roten, sino crear una zona donde se muestren x anuncios, en fila, en un lateral por ejemplo, sin tener que user el HTML Prepend como una opcion.

    Un saludete.
    PD. Muy coketo la plantilla y el fondo :)

  2. Jordi Touza Bonnin

    Hola,

    Gracias por tu aportación. Las úlitma versión de OpenX funciona bastante mejor, pues mucho de lo que digo sirve de poco.

    Sobre lo de la cache, en mi caso, creo que la tengo a 20 minutos y a un me parece poco a veces, pues el site donde encontré los problemas tiene más de 5 millones de vistas menusales… (no en mi blog, claro). Al final para reducir los tiempos de descarga cree un AdServer para cada plataforma (.com, .it, cl, …) de esta forma el tamaño de la BBDD se redujo considerablemente.

    Y respecto a tu pregunta, de poner varios anuncios en una misma zona, creo que no se puede hacer, al menos no he visto nada que lo permita y usando el prepend no creo que sea una buena idea, pues el proposito de del prepend y el append es poder crear un marco o poner la palabra “publicidad”, aun que peronalmente no lo recomeindo ni para eso, pues si uasas iframes (como en mi caso) al agregar más HTML se crea un margen dentro del iframe bastante incomodo

    Saludos y gracias otra vez

  3. Guille

    Hola, muy buena data con respecto a la optimizacion de OpenX. Yo hace un tiempo que lo quiero probar, pero al instalarlo no me deja crear nuevas campañas, tengo un problema de permisos o algo asi. Me sale un error 500. Instarlse se instala perfectamente pero luego una ves en el administrador no me deja crear las campañas. Si te paso lo mismo me podrias tirar data de como lo arreglaste por mail, te lo agradeceria!

  4. Jordi Touza Bonnin

    Hola,
    Pues nuca me pasó un error de este tipo en openx. Al tratarse de un error 500 pueden ser muchas cosas, mira ver si tienes instaladas todas las librerías que necesita openx o que los permisos de escritura lectura sean los correctos.
    Siento no poder ayudaste más, pero no se que puede ser.

    Saludos

  5. marlon

    hola
    estoy haciendo pruebas con openx, pero tengo un problema y es que no hace la rotación de banners de una misma campaña en una pagina, he probado e todo y nada. si me pueden ayudar mil gracias

  6. Jordi Touza Bonnin

    Hola, perdona que responda tan tarde…

    has probado a dar diferentes pesos de prioridad a los banners? El código que insertas en tu web… reemplazas las variables (cb=….) por un valor dinamico para evitar la cache?

    Saludos

  7. Esther

    Hola,

    Gracias por la información sobre Openx, porque llevo tiempo dándole vueltas a este tema pero no quiero meterme del todo si no es lo que necesito. A lo mejor podrías ayudarme.

    Básicamente quiero poder mostrar publicidad de plataformas tipo Tradedoubler y Zanox, discriminando por la ip del visitante mostraría un anuncio u otro , ¿Openx sirve para esto? .

    Por otro lado creo que hay la versión de instarlo en tu servidor o usar su plataforma. Por razones de tiempo creo lo suyo es primero probar que tal funciona, y si fuera el caso quizá instalar in situ. ¿Me equivoco? ¿hay diferencias?.

    Y hablas de caché, ¿qué quieres decir?.

    Muchas gracias por cualquier aclaración que puedas hacerme al respecto, y de nuevo gracias por la información.

    Saludos,

  8. Jorge Gutiérrez

    Hola amigo, estoy intentando configurar filtros por ciudad con GeoLiteCity, pero no respeta el filtro, y al parecer sí esta bien configurado porque me permite realizarlo.

    Espero tu apoyo al respecto.