Recientemente estuve ayudando a un conocido a optimizar WordPress, tenía problemas de CPU que le causaban problemas con el hosting compartido y aún tengo pendiente de escribir sobre ello pero todavía no es el momento.
Pero sí que quiero aprovechar para comentar que me dí cuenta de que las visitas desde Google causaban mucho más consumo que normalmente: el causante era WordPress Plugin MoreMoney un plugin que tiene como objetivo principal mostrar publicidad Adsense cuando el visitante viene desde buscadores.
En principio tenía mis dudas, no sé mucho de programación (sinceramente, si tuviera que hacer un plugin similar seguramente metería cosas peores) pero el plugin me puso la mosca detrás de la oreja y después de consultar a alguien que sí sabe lo suyo me dio los siguientes puntos:
-
Overbloated, lo que hace el código complejo y que consume mucho.
-
Mezcla distintos tipos de expresiones regulares.
-
Aún así la lógica del código puede ser simplificada mucho.
Y es que parece que mezclar preg_replace
y eregi
está mal. Fue desactivar el
plugin y aplicar otro método similar para ver un aumento de rendimiento
más que notable.
En defensa del plugin tengo que decir que no fue el culpable de los problemas de CPU (los tiros van por otro sitio) pero sí que ayudo a empeorarlo ya que es poco eficiente.
Alternativa
La solución que yo uso para mostrar publicidad a los visitantes desde buscadores -- realmente no necesito más -- es la misma que se puede ver en el código del menéame, en una sola línea:
if (preg_match('/q=|search/', $_SERVER['HTTP_REFERER']) ) { }
La sentencia anterior viene a ser que si el referido
(HTTP_REFERER
) incluye /q= o search/ entonces se debe ejecutar lo
que viene entre { y }. Por ejemplo Google envía de referido algo
parecido a http://www.google.es/search?q= por lo que la
sentencia saltará.
No es perfecto ya que no lo coge absolutamente todo pero coge el 99% de búsquedas desde buscadores y funciona. Todo ello en una línea de código, y muy simple, se aplica perfectamente el principio KISS.
Aplicándolo en WordPress
Como colofón final, una manera fácil de aplicarlo a WordPress y WP-Cache es la siguiente:
-
Crea un fichero ad.php en el directorio de tu plantilla.
-
Introduce el siguiente código en
ad.php
:<?php if (preg_match('/q=|search/', $_SERVER['HTTP_REFERER']) ) { print 'aquí el codigo Adsense, tal cual te lo da Google'; } ?>
-
Opcional: el ejemplo es para mostrar Adsense pero puedes poner cualquier cosa dentro del print.
-
Donde quieras que se muestre ese bloque adsense (sólo para quienes vengan desde buscadores) metes el código para ejecutar ese fichero php de forma dinámica que aparece en la documentación de WP-Cache:
<!--mclude wp-content/themes/plantilla/ad.php--> <?php include_once(ABSPATH . 'wp-content/themes/plantilla/ad.php'); ?> <!--/mclude-->
No seré programador, pero sé reconocer cuando algo es tan simple que es brillante y pienso ¿cómo no se me ocurrió a mí?.
Comentarios