El coste oculto de las carpetas wp-content infladas en los flujos de staging de WordPress

Montar un sitio de pruebas de WordPress solía ser la parte dolorosa del trabajo. Configurar un subdominio, copiar la base de datos, sincronizar los archivos, corregir el buscar-y-reemplazar y rezar para que nada en wp-config.php reventara. WP Staging Pro condensó todo eso en un clon de un clic y, para la mayoría de los flujos de trabajo de agencia, el problema de las pruebas está prácticamente resuelto.

El problema es que el flujo de trabajo de pruebas sigue volviéndose más pesado aunque el plugin de pruebas siga volviéndose más rápido. Y el culpable casi siempre es la misma carpeta: wp-content/uploads.

Trabajo cada semana con muchas agencias y equipos de plugins. El patrón es casi idéntico en todos los casos. Un sitio se lanza con unos prudentes 2 GB. Ocho años después es un monstruo de 60 GB con subcarpetas wp-content/uploads/2018/02/ que nadie ha tocado desde el día en que se crearon. El plugin de pruebas sigue funcionando. El clon sigue terminando. Solo que tarda mucho más de lo que debería, se come un buen trozo de disco y convierte sigilosamente un flujo de un clic en una pausa para el café.

Ese es el coste oculto. Y vale la pena solucionarlo, porque la solución es, sinceramente, bastante aburrida una vez que la ves.

Por qué wp-content/uploads es el impuesto de las pruebas del que nadie habla

Así es como se ve realmente por dentro una instalación media de WordPress. El núcleo son unos 50 MB. Los plugins y los temas juntos, incluso en una construcción de agencia cargada, rara vez superan los 500 MB. La base de datos de un sitio con mucho contenido podría llegar, como mucho, a 200-400 MB.

Luego está wp-content/uploads. En un sitio WooCommerce de cinco años, esa carpeta puede llegar fácilmente a 20-50 GB. En un sitio de publicación con muchos medios o de membresía, más de 100 GB no es raro. He visto sitios de clientes donde uploads representa el 98 % de toda la huella de WordPress. El otro 2 % es todo lo que realmente cambia entre despliegues.

Los plugins de pruebas tienen que lidiar con todo ello. Incluso cuando WP Staging Pro hace su trabajo a la perfección, copiando una base de datos en segundos y saltándose las carpetas excluidas con precisión quirúrgica, en el momento en que le pides que clone un sitio completo para la revisión del cliente, le estás pidiendo a tu servidor que duplique cada JPEG de 2019.

Esto se manifiesta en cuatro costes reales:

  1. Espacio en disco. Un sitio de 60 GB clonado a un subdominio de pruebas ocupa ahora 120 GB en disco. ¿Dos entornos de pruebas? 180 GB. La mayoría de los hosts compartidos e incluso gestionados cobran MUCHO por eso.
  2. Tiempo de clonado. Copiar la base de datos es rápido. Copiar los archivos está limitado por la E/S de tu servidor. Una carpeta uploads de 60 GB es un trabajo de E/S de 60 GB por muy bueno que sea tu plugin.
  3. Peso de los backups. Cada backup de cada sitio de pruebas vuelve a archivar todas las imágenes que has subido en tu vida. Almacenado en destinos en la nube, eso sale caro.
  4. Carga mental. «No clones el sitio de pruebas ahora mismo, estoy esperando a que termine un backup» es una frase que he oído, de una forma u otra, en todas las agencias con las que he trabajado.

Nada de esto es culpa de WP Staging Pro. Es un problema de la biblioteca de medios disfrazado de pruebas.

Lo que WP Staging Pro hace realmente de maravilla

crear copia de seguridad del sitio

Antes de hablar del lado de los medios, conviene ser honestos sobre en qué es genial WP Staging Pro. Porque la idea de este artículo no es «los plugins de pruebas son lentos» —no lo son, los modernos son notables—. La idea es que las partes que son lentas se han desplazado.

WP Staging Pro se encarga de las partes difíciles de las pruebas con muy poco drama:

  • Clonado de la base de datos con soporte selectivo de tablas, que es, sinceramente, la parte de las pruebas que antes lo rompía todo. Las tablas se copian con la reescritura de prefijo correcta y los datos serializados se manejan bien.
  • Clonado del sitio con un clic a un subdirectorio o subdominio, con autenticación de usuario para que la copia de pruebas no se indexe ni se acceda por accidente.
  • Sincronización de plugins y temas entre pruebas y producción, para que una agencia pueda probar una actualización de plugin de forma aislada y devolver la versión que funciona sin destruir las ediciones del cliente.
  • Backups con destinos en la nube como Google Drive, Amazon S3, Dropbox, OneDrive, Wasabi, pCloud, DigitalOcean Spaces, almacenamiento genérico compatible con S3 y SFTP. Esta es la parte que la mayoría subestima. Una canalización de backups programada a S3 es realmente una función de nivel empresarial.
  • Restauraciones a prueba de balas, la función que no aprecias hasta el día en que la necesitas. Un backup solo vale lo que puedes restaurar de él. WP Staging Pro restaura limpiamente incluso cuando el propio WordPress está roto y no puedes entrar en wp-admin. Hay una herramienta de restauración independiente que se ejecuta al margen de tu instalación de WordPress, justo para las situaciones en las que todo se ha torcido. Si tu sitio se cae a las 2 de la madrugada, esta es la función que te vuelve a poner en línea.
  • Soporte multisitio, que históricamente ha sido donde cualquier otra herramienta de pruebas se desmorona silenciosamente.
  • Migración de sitios entre hosts y dominios, con el buscar-y-reemplazar gestionado automáticamente.

El plugin está hecho para sitios de cualquier tamaño, incluidas instalaciones de más de 50 GB, y la arquitectura es realmente impresionante una vez que indagas en cómo divide las operaciones en bloques para evitar los timeouts de PHP. Para todo lo que está dentro de la base de datos, la carpeta de plugins y la carpeta de temas, es un problema resuelto.

La carpeta wp-content/uploads es donde la conversación se pone interesante.

Por qué «simplemente excluye la carpeta uploads» no es una respuesta real

excluir la carpeta uploads

El movimiento obvio es decirle a WP Staging Pro que se salte wp-content/uploads durante el clonado. El plugin te deja hacerlo y, para algunos flujos de trabajo, es lo correcto.

Para la mayoría de los flujos no lo es. Aquí está el porqué.

Si tu sitio de pruebas no tiene los medios de producción, cada página que previsualizas se ve rota. La imagen principal de la portada es un marcador de posición. Las galerías de productos de WooCommerce son 404. Las imágenes destacadas no se muestran. Todo el sentido de las pruebas es ver lo que ve producción, y un sitio de pruebas sin medios no te permite aprobar un cambio con confianza.

Algunos equipos lo resuelven con montajes NFS, enlaces simbólicos o tareas rsync que se ejecutan junto al clon de pruebas. Funcionan. También son frágiles, dependen del host y reintroducen exactamente el tipo de configuración manual que los plugins de pruebas se crearon para eliminar.

Hay una respuesta más limpia que funciona sin importar cuántas copias de pruebas crees, y no requiere ningún scripting a nivel de host.

Saca los medios de WordPress por completo

El cambio que de verdad soluciona el problema es dejar de tratar los medios de WordPress como parte del sitio. Muévelos a almacenamiento de objetos en la nube, sírvelos a través de una CDN y deja que WordPress guarde punteros en lugar de archivos.

Infinite Uploads: saca los medios de WordPress

Esto es lo que hace Infinite Uploads. Mueve todas las imágenes, vídeos y archivos de tu Biblioteca de Medios fuera de tu servidor de hosting y a la nube, y luego se asegura de que tu web los siga sirviendo a los visitantes a la velocidad del rayo desde servidores de todo el mundo. Piénsalo como mudar tus archivadores de tu oficina a un almacén más cercano a tus clientes. Los archivos siguen siendo tuyos. Simplemente ya no viven en tu servidor de hosting, lo que significa que tu web se vuelve más ligera, más rápida y mucho más barata de respaldar.

Para el funcionamiento diario del sitio, el resultado es que WordPress no cambia. Los editores suben imágenes igual que siempre. La Biblioteca de Medios se ve normal. Las URL funcionan. El SEO no se rompe, porque la reescritura se gestiona a nivel de base de datos y las URL antiguas se conservan.

Para los flujos de trabajo de pruebas en concreto, tres cosas cambian de forma útil:

El clon de pruebas se vuelve ingrávido. Cuando wp-content/uploads son 200 MB de marcadores de posición que apuntan al almacenamiento en la nube en lugar de 60 GB de JPEG reales, WP Staging Pro no tiene casi nada que copiar en el lado de los medios. El tiempo de clonado baja de «ve a por un café» a «espera, ¿ya está?», porque el plugin hace ahora aquello para lo que se construyó: copiar las partes del sitio que de verdad cambian.

Las pruebas y la producción comparten la misma biblioteca de medios. Cuando clonas, la copia de pruebas apunta al mismo almacenamiento en la nube que producción. Cada imagen, vídeo y PDF existente carga en pruebas sin copiar un solo archivo. Sin tareas de sincronización, sin esperar a que termine una transferencia de 60 GB, sin una vista previa a medias en la que falta la imagen principal. Infinite Uploads ha probado este flujo de trabajo específicamente con WP Staging Pro y confirmado que la conexión sobrevive tanto al clonado como a devolver los cambios a producción.

Los backups dejan de ser pesados de almacenar. Un backup programado de WP Staging Pro de la base de datos, los plugins y los temas es lo bastante pequeño como para enviarse a Google Drive en segundos. Los medios ya están respaldados en la capa de almacenamiento en la nube y no necesitan archivarse dentro de cada snapshot de WordPress. Los costes de almacenamiento bajan. Los tiempos de restauración bajan. Los programas pueden ejecutarse cada hora sin que nadie lo note.

El flujo de trabajo combinado en la práctica

Cómo se ve esto cuando juntas los dos plugins es bastante sencillo.

Producción ejecuta WP Staging Pro para los backups, las migraciones y el clon de pruebas ocasional. El mismo sitio ejecuta Infinite Uploads para mantener la biblioteca de medios descargada y servida por CDN. Tus editores no saben que existe ninguno de los dos plugins. Suben imágenes, pulsan publicar y todo funciona.

Cuando necesitas un sitio de pruebas para probar una actualización de plugin o previsualizar un rediseño, pulsas clonar en WP Staging Pro. El plugin copia la base de datos, la carpeta de plugins y la carpeta de temas. La carpeta uploads es una fina cáscara de referencias, así que se copia en segundos. El nuevo sitio de pruebas aparece apuntando a los mismos medios en la nube que producción, lo que significa que cada página se renderiza correctamente sin nada del peso en disco.

Cuando el trabajo está hecho y devuelves los cambios a producción, WP Staging Pro se encarga de la fusión de la base de datos y el código. Los medios nunca tuvieron que moverse porque nunca estuvieron realmente en ninguno de los dos servidores.

Cuando los backups se ejecutan según un programa, son snapshots de base de datos y código, lo que significa que son pequeños, rápidos y baratos de almacenar. Los medios tienen su propia redundancia en la capa de almacenamiento en la nube, que de todos modos es genuinamente más fiable que comprimirlo todo en un archivo .wpstg una vez al día.

Este es el stack que una agencia moderna de WordPress debería ejecutar en cada sitio de más de 5 GB. WP Staging Pro para la base de datos, los plugins, los temas y las migraciones. Infinite Uploads para los medios. Cada plugin haciendo lo que mejor sabe hacer, sin que ninguno pise al otro.

Qué cambia cuando el stack es el correcto

Las métricas que importan para los flujos de trabajo de agencia se desplazan de formas fáciles de medir.

Los clones de pruebas que solían tardar 20 minutos terminan en menos de dos. El uso de disco en el servidor de origen baja un 80-95 % en sitios con muchos medios. Los backups programados dejan de fallar por límites de memoria porque ya no intentan archivar un directorio de 50 GB. Las facturas de hosting bajan en los planes donde el almacenamiento se mide. Los entornos de vista previa para clientes se pueden levantar de forma casual en lugar de programarse en torno a la carga del servidor.

Y la parte más difícil de cuantificar: el flujo de trabajo de pruebas deja de ser un proyecto. Se convierte en lo que se suponía que debía ser desde el principio, que es un clic rutinario que te permite publicar con confianza.

WP Staging Pro hizo que las pruebas fueran accesibles. Infinite Uploads las mantiene así a medida que tus sitios crecen.

Mantén tu stack honesto. No dejes que la carpeta uploads se coma el flujo de trabajo.

Blake Whittle

Autor: Blake Whittle

Blake Whittle leads Infinite Uploads and Big File Uploads, two WordPress plugins built to help site owners manage large media libraries and upload bigger files with fewer limitations. Together, the plugins serve a growing user base of 120,000 active installs.