Llevo mucho tiempo peléandome con mi WordPress, este que leés acá. Unos seis años para ser mas exacto. Flor de viaje… En todo este tiempo pasé mil quinientas penurias distintas para mantenerlo online y menos hacerme puto, probé de todo.
Hoy vengo a contarte como hice para optimizar todas las imágenes que componen este blog –784 archivos en formato .jpg y contado– de forma tal de poder ahorrar eso que tanto me falta todo el puto tiempo: Ancho de banda (por que a esto que leés te lo estoy escupiendo desde un servidorcito que tengo en casa, con una conexión ADSL de 1 mbit de subida, pero eso es tema para otro post que tengo a medio escribir).
Si tenés contenido alojado en internet que incluye imágenes y necesitás optimizar el uso del ancho de banda, optimizar las imágenes que servís a tu público puede parecer un trabajo de enano para ahorrar uno o dos kilobytes de mierda por foto, ¿no?. Nunca se me hubiera ni ocurrido la semejante cosa, nunca le hubiera dedicado tiempo, a no ser por que por casualidad hace un tiempo me enteré de la existencia de jpegoptim.
Esta herramienta combinada con una pendejésima de bash hace que sea tan simple optimizar tus jpgs que si no lo hacés es por pelotudo solamente. Como reza en la descripción:
DESCRIPTION
jpegoptim is used to optimize/compress jpeg files. Program supports lossless optimization, which is based on optimizing the Huffman tables. And so called «lossy» optimization where in addition to optimizing Huffman tables user can specify upperlimit for image quality.
Para que te des una idea de cuanto se puede ganar, lo tiré sobre un directorio cualquiera en modo «hacé tu magia». Esto es el antes:
root@floyd:/# du -sh /malditonerd/ 509M /malditonerd
Esto es el después:
root@floyd:/# du -sh /malditonerd 503M /malditonerd
Puede que no parezca la gran cosa, poco mas de un 2% de compresión en el gran total pero acordate que estás comprimiendo –optimizando mas bien– jpegs, que se supone que ya están comprimidos a mas no poder y que sólo esto ya te está ahorrando posiblemente un 2% de ancho de banda, en un solo comando, de un solo saque, en no más de un par de minutos, sin perder calidad perceptible a simple vista y gratis.
Tu página va a cargar un poco mas rápido. Estás acelerando tu blog o sitio en definitiva, en una fracción imperceptible pero que te podría hacer rankear mejor en buscadores por ejemplo o que si tenés un sitio de alta gama, de esos que reciben miles de visitas o millones, te puede ayudar muchísimo.
Como se hace:
Jpegoptim es tan simple de usar como:
~# jpegoptim miarchivo.jpg
Si bien tiene muchísimas opciones que podés configurar, a grosso modo solamente invocando el comando y pasándole como argumento el nombre del archivo con la imágen el solito ya se encarga de optimizar todo de forma tal de que el resultado final sea imperceptible a simple vista.
Para optimizar todas las imágenes que servís en tu sitio por http en batch-mode, todas de una vez, un toque de bash al rescate:
~# find /path_a/tus/imagenes/ -type f -iname "*.jp*" -exec jpegoptim {} \;
Y eso es todo: Encontrar todos los archivos en el directorio especificado que se llamen *.jp* (case insensitive) y ejecutarles jpegoptim.
Así que ahí tenés. Si ejecutaste Google Page Speed Insights o alguna de esas herramientas parecidas para medir que tan bien te anda la página y te encontraste con el clásico «podrías optimizar las imagenes, ¿no?» y tenés shell en tu server, te acabo de hacer la vida mas fácil. Obviamente, jpegoptim tiene que estar instalado previamente en tu Linux.
¿Querés optimizarlas aún mas? Eliminale los metadatos:
Sacale los comentarios o información exif a las imágenes y ganá una vueltita de rosca mas al tornillo, pasando de los 509 MB originales a esto agregándole al comando un «–strip-all» :
root@floyd:~# du -sh /malditonerd/ 499M /malditonerd
Como reza el manual:
–strip-all
Strip all (Comment & Exif) markers from output file. (NOTE! by default only Comment & Exif markers are kept, everything else is discarded)
Hola, perdon por la ignorancia pero donde deberia ejecutar esos comandos en mi wordpress?
Saludos.