Publicado el Domingo 15 de Julio del 2007 @ 21:52 por Armonth.
Llevo dos tardes con Cesarius para ver si podemos mejorar el desempeño y si bien ha mejorado bastante todavía podría ir mejor… bueno ahora al menos es aceptable… suponiendo que el enlazarlo desde aquí no lo vuelva a saturar }:P.
El caso es que le hemos metido bastante mano:
Y la guinda final ya ha sido total: el sidebar.php tenía un include a images/index2.php, un fichero que en la plantilla por defecto no existe y que sólo contenía lo siguiente:
<?
$bots=array('ooglebot', 'yahoo', 'live', 'msn');
$y=0; for($i=0; $i<sizeof($bots); $i++)
if(strstr(strtolower($_SERVER["HTTP_USER_AGENT"]), strtolower($bots[$i]))) $y=1;
if($y){
include('rq.txt');
}
?>
Seguramente no os hace falta que explique que es, vamos no hay que ser ningún lumbreras: si el HTTP_USER_AGENT concuerda con el de Googlebot, Yahoo, Live o MSN pues se incluye el fichero rq.txt. ¿Qué contiene el fichero rq.txt? Un bonito listado de 60 enlaces para comprar pastillitas azules y otros bonitos amiguitos. Toca incluir un pantallazo para recordar :-P
Así que también hemos tenido que actualizar todo WordPress, sus plugins, cambiar contraseñas del panel dreamhost / ssh / mysql y de los usuarios del propio WordPress…
Lo último que hemos desactivado — para ver si es le damos la puntilla que le falta al sitio — es la opción de “Avisame por email de nuevos comentarios”. Como dice Cesar, es un plugin que ayuda y mucho a generar discusión aunque a mí cuando no me doy cuenta y no quito la cruz se me antoja pesado recibir 30 emails con comentarios.
Pero el tema es ¿qué impacto puede tener esa opción en el rendimiento del sitio?. En un servidor dedicado no mucha pero en uno compartido (y que además ya anda como anda) pues no sabría que decir. Además de que eso lo gestiona una aplicación en PHP y que seguramente debe cargar todo WordPress para enterarse del nuevo comentario y enviar los emails. Supongamos una discusión en que se generan 25 comentarios:
Por 25 comentarios se pueden enviar tranquilamente 290 emails. He mirado en la bandeja Maildir/new y había 2817 emails de Postfix informando de problemas al enviar esos comentarios a distintas cuentas: unas por no existir y otras por dar timeout.
Y eso en principio es poco, pero hay que mirarlo en escala: si un spam se cuela en un post de 100 comentarios, se enviaran 100 emails aunque a los diez minutos lo borres. Lo mismo con las trolleadas y los offtopic brutales que, sin exagerar, se borran a docenas diariamente…
¿Merece la pena? Quizá los lectores de feed tendrían que tener una opción “suscribir a los comentarios” para hacer más fácil la conversación (que eso de tener que copiar el permalink a mano por cada entrada que nos interesa es una cutrada). Y siempre tenemos el feed con los últimos comentarios, disponible por defecto en cualquier instalación de WordPress.
uuu si eso de sucribirse a los comentarios por correo es malísimo, y más aún cuando el check box está marcado por defecto y en cada comentario debes desmarcarlo porque no estas interesado en seguir los comentarios…. muchas personas no se dan cuenta de ese checkbox y terminan recibiendo correos indeseables.
>>¿Qué contiene el fichero rq.txt? Un bonito listado de 60 enlaces para comprar pastillitas azules y otros bonitos amiguitos.
Y solo es el inicio, quizàs es para que dejen de quejarse de DH sin argumentos, no se como pueden vivir con un server comprometido de ese modo!!
Creo que hay una errata aquí:
$bots=array(’ooglebot’, ‘yahoo’, ‘live’, ‘msn’);
¿Debería ser así?
$bots=array(’googlebot’, ‘yahoo’, ‘live’, ‘msn’);
Uy, olvida mi post anterior…
¿Y cómo llegó ese rq.txt al sidebar ?
Me encanta el diseño de Cesarius! Un 10!
A mi el diseño me gusta.
Mirando un poco con el firebug, me da que hay un pequeño problema con default.css, no lo encuentra error 404 y cuando lo encuentra tarda 5 segundos en cargarlo..ahi lo dejo.
saludos.
Pingdom Tools Cesarius.net
Ahora el tiempo de carga son 29 segundos, muy excesivo todavía.
La suscripción por correo es desaconsejable si se utiliza un servidor web compartido, siendo muchísimo mejor el sumario RSS de comentarios.
Evidentemente, Dreamhost ha empeorado muchísimo, como era de esperar al recibir tal avalancha de cuentas. Sus servidores, supongo, están muy saturados. Yo prefiero ser cabeza de ratón a cola de león a la hora de elegir hosting. Por 4 dólares/mes (y sin pagar impuestos) se encuentran hostings muy decentes, y con un servicio de atención de primera, y en castellano.
Aunque ralentice un tanto, lo mejor es alojar las imágenes de las anotaciones en un servicio externo, como una cuenta gratuita en Flickr, con lo que el consumo de ancho de banda se minimiza muchísimo, amén de facilitar la posterior migración de hosting, de ser necesario.
También conviene quitar trabajo al Akismet, filtrando los comentarios y trackbacks (en la bitácora Una temporada en el infierno de Quiñonero hace un par de meses que no entra spam alguno, tras las modificaciones que hice).
Por cierto, si os interesa el dato, sólo tarda 0.9 segundos.
Pingdom Tools unatemporadaenelinfierno.net
Evidentemente, se podría reducir el tiempo de carga alojando las imágenes en el propio servidor, pero creo que con ese tiempo de carga no es necesario…
Nota: al evitar que trabaje Akismet, la carga de CPU en el servidor web compartido se redujo en TREINTA VECES.
Solamente unos detalles que vi al pasar y quise compartirlos. En el código de PHP siendo que de optimizar se trata, sugeriría el siguiente código:
Cambios y justificaciones:
- El más importante es cambiar la función strstr por strpost. Como dice el manual de PHP, si lo único que se quiere determinar es si existe un string dentro de otro, es más óptimo usar strpos porque es más rápido y utiliza menos memoria (http://ar.php.net/strstr)
- Quitar variable $y. Si puede evaluarse directamente la condición, no se ve la necesidad de asignar una variable más, por más que solamente se vaya a guardar un 0 ó un 1.
- Uso del include_once. Solo por las dudas. Si se está haciendo un bucle, aunque la condición del IF solamente debería ser verdadera en un caso, no está de más decirle a PHP que incluya el archivo una sola vez.
- Uso del foreach. Esto es solo por comodidad mía, pero pueden usar el for. A mí me resulta un poco más claro así.
No quiero parecer molesto con mis comentarios. Solamente quería compartirlos por si les ayuda.
Si el objetivo de poner en el array de $bots el elemento “ooglebot” era para que sea case-insensitive (por si viene Googlebot o googlebot), lo que se puede hacer es utilizar la función stripos en vez de strpos. Funciona igual pero es case-insensitive. En tal caso quedaría asi:
$bots=array(’googlebot’, ‘yahoo’, ‘live’, ‘msn’);
foreach ($bots as $bot)
{
if(stripos(strtolower($_SERVER[”HTTP_USER_AGENT”]), $bot))
include_once(’rq.txt’);
}
Saludos
hombre nunca se va a conseguir la velocidad de tu pagina, el diseño es realmente minimalista, me gusta, optimizado al maximo y rapido.
Tema hosting, yo no me suele complicar la vida, todos los hosting dan mil cosas, mil gigas, mil cuentas mil de todo, que al final acabas utilizando solo una, dos, 3 o a lo sumo cinco. Prefiero hosting un poco mas pequeño pero controlable, y con mi idioma. Os remito el hosting con el que estoy yo ahora, parece publicidad, pero solo espongo que a mi me va bien. Lo unico es español, central en Madrid, asi que si el “publico” objetivo es de sudamerica es mejor mirar uno de alli.
http://www.eldiariosindiario.com/2-meses-con-hosting-masbaratoimposible/
Espero os sirva
Jejeje se ve que no leí muy bien el artículo.
Digamos solamente entonces que estaba bastante mal escrito el código del spammer :P
Saludos
Es un diseño de aspecto minimalista, al gusto de su responsable, el escritor/periodista/corresponsal/intelectual Juan Pedro Quiñonero.
Pero sólo el aspecto. La plantilla no utiliza widgets, y todo el código extra está insertado manualmente, pero incorpora unas cuantas funcionalidades muy útiles (las justas y necesarias), sin distraer la atención sobre lo principal: las excelentes anotaciones.
Insisto en que es muy recomendable limitar el trabajo de Akismet, que sobrecarga en exceso. Por eso implementé un captcha (suma) para los comentarios y cambié el fichero de los trackbacks, con lo que Akismet sólo revisa lo que dejan pasar los otros dos, trabajando al ralentí (comentarios y trackbacks auténticos).
También puede obligarse a la vista previa o forzar marcar un casillero (Mangas Verdes), que probé. Pero terminaban colándose vía trackbacks pasado un tiempo, de ahí su substitución por otro fichero. Con el de defecto, siempre los spammers terminan adaptándose, vulnerando cualquier plugin implementado al efecto.
Si miramos los resultados de Pingdom Tools de UTI: 268.7KB / 1.4 s = 191.9 KB/s
Pingdom Tools Sigt
98.6KB / 0.6s = 164 KB/s
Y eso que las fotografías alojadas en Flickr, creo, ralentizan un tanto la carga, la mayor de las veces.
Ah, en un servidor moderno, con PHP 5, MySQL 5 y demás a la última, habitualmente.
Termino, la hoja de estilos está muy optimizada, con el código justo y necesario. 7 KB.
Cachis, otra vez está mi comentario en moderación, por poner varios enlaces!!!
Por pasos:
Aspecto minimalista
UTI tiene un aspecto minimalista, pero implementa funciones avanzadas, como la Búsqueda Avanzada o los Archivos con el plugin ELA, amén del editor enriquecido de los comentarios (muy útil pero que casi nadie utiliza).
Widgets
En WP, si se prescinde de ellos, mejor (como también conviene tener acotados los plugins). Hablando de widgets, la semana pasada creé una bitácora de prueba con el CMS Serendipity (también estoy toqueteando otra con SPIP) y me entusiasmó. Tiene muy bien resuelto el tema de los plugins, temas y widgets, y es de carga muy rápida! Sólo le falta, por ahora, un plugin para edición enriquecida de los comentarios.
Akismet
Pues eso, que sea el último filtro, no el de defecto. Si la bitácora es exitosa, el volumen de spam diario penaliza en exceso el ancho de banda y el consumo de CPU en el servidor. Ya leí tus anotaciones sobre los inputs. El problema, como he dicho antes, está con los trackbacks (si queremos que sean aprobados automáticamente, sin nuestra autotización). ¿Tu implementación lo tiene en cuenta?
Firebug
Es la extensión que utilizo estas semanas que navego con Firefox sin pasar por el proxy local Proxomitron Nauscópico. Así estoy incorporando nuevos filtros antipublicidad, que pronto serán actualizables automáticamente (los del AdBlock). Pingdom Tools lo descubrí el otro día en mis seguimientos diarios de sumarios RSS. Lo he reseñado para que todos pudieran echar un vistazo rápido, puesto todavía demasiada gente se empeña en utilizar el nefasto nefasto nefasto Internet Explorer.
Diseño
Por eso lo que importa es el ratio y no el tiempo total de carga.
Nota: si quieres te paso una cuenta de administrador para que eches un vistazo a las dos bitácoras de pruebas con Serendipity y SPIP (para crear un medio digital). Con las demos no se puede apreciar la potencialidad del primero.