Una corta entrada para informar que aunque no han habido novedades sigo revisando la forma en la cual pueda ser implementado un plugin que cree los sprites de una instalacion wordpress de una forma automatizada.

Estado actual

En este momento el programa puede generar sprites de las imagenes de una web. Esto queda limitado solo a las de una pagina en concreto. Todo se realiza por la parte del servidor, se escalan, comprimen y por ultimo se cachean las imagenes y no supone una perdida de rendimiento apreciable aun en la primera ejecución  Las siguientes de hecho beneficia la velocidad de carga debido a que ya no tiene que hacer tantas llamadas.

Problemas encontrados

Pero esto no es suficiente. Aunque las imagenes incrustadas en la pagina suelen ser la mayoría, hay una serie de imagenes que están presentes en cada una de las paginas aunque no haya ninguna incrustada. Estas son las imagenes integradas en el CSS. Pueden ser tan pocas como 2 o tantas como suponer el 100% de las imagenes de la pagina, dependiendo del tipo y diseño de tema que se use en la instalación de Wordpress.

Soluciones posibles

Esas imagenes no pueden ser tratadas directamente mediante php. Se encuentran ocultas en el código de los CSS de la pagina y muchas veces las hojas de estilo están mal formateadas.

  • Se ha sopesado el uso de un interprete CSS en PHP. Hay varias librerias que permitirian interpetar las hojas de estilo, pero estos interpretes devuelven el contenido literal, correctamente formateado pero que no siempre es aplicable a un pagina html debido a que los estilos de los objetos DOM pueden ser modificados en tiempo real. Ademas que estos interpretes no vinculan los objetos DOM con sus correspondientes estilos. No todos los estilos CSS pueden ser tratados, hay ciertas excepciones que hay que tener en cuenta para evitar romper los estilos. 
  • La lectura directa de los estilos de los objeto DOM no es posible desde el servidor. Aunque desde PHP se pueden acceder a los estilos inline, no se pueden acceder a los estilos aplicados si estos provienen de una hoja de estilos externa. Las clases DOM de PHP no obtienen los recursos externos vinculados.
  • La unica alternativa encontrada hasta ahora es instalar una VPS que permita la ejecución de un navegador en el servidor. Esto implica mas tiempo y una mayor inversion. Este tipo de operaciones no pueden llevarse a cabo en un hosting basico, es necesario tener acceso por SSH y tener libertad para instalar nuevas dependencias. Con este metodo se podrían ejecutar sentencias jQuery inyectadas para obtener los estilos propios y heredados de un objeto DOM en concreto.

Si bien esta es la unica solución que he encontrado hasta ahora, es cierto que ademas de necesitar de servicios externos  para su implementación tambien seria muy costosa  economicamente y de una complejidad enorme.

Así que estoy abierto a sugerencias que puedan simplificar el proceso ¿Existe algún metodo alternativo para interpretar el codigo completo (html, javascript…) de una pagina web desde un servidor Apache?