¿Qué es una transformación por URL?

Una transformación por URL expresa instrucciones de procesamiento multimedia en la URL de una solicitud para que se pueda generar o recuperar un recurso derivado durante la entrega. Las firmas y la validación de parámetros pueden restringir las operaciones permitidas.

Cómo funcionan las transformaciones por URL

Un servicio de transformación por URL lee dos cosas de la URL de la solicitud: qué recurso de origen usar y qué hacer con él. Ante un fallo de caché, recupera el origen, ejecuta el procesamiento, almacena el resultado y lo devuelve; ante un acierto, devuelve el resultado almacenado sin volver a procesarlo. Cloudflare describe esta secuencia para sus transformaciones de imágenes, y Cloudinary crea el archivo derivado la primera vez que se accede a una URL de transformación. Por tanto, la URL describe el trabajo y es el punto de partida de la clave de caché, con dos salvedades: un servicio puede normalizar la URL primero y, cuando la salida también depende de los encabezados de la solicitud, como ocurre con la selección automática de formato, una URL puede producir varios resultados en caché. La sintaxis varía según el servicio: Cloudinary e imgproxy colocan las operaciones en segmentos de la ruta, imgix usa parámetros de consulta y Smart CDN de Transloadit identifica un Template guardado en la ruta y pasa sus variables como parámetros de consulta. También varía si importa el orden en que se escriben las operaciones. Cloudinary ejecuta cada componente separado por barras sobre el resultado del anterior, mientras que imgproxy y Fastly Image Optimizer aceptan opciones en cualquier orden y las aplican en una secuencia interna fija.

Datos clave

  1. ¿Qué impide que alguien solicite miles de tamaños? Nada, a menos que restrinjas qué URL son válidas. La documentación de Thumbor llama a esto manipulación de URL y muestra como ataque un bucle que recorre dimensiones, e imgproxy, que deja desactivada la comprobación de firmas de forma predeterminada, recomienda habilitarla en producción por el mismo motivo. Los controles habituales son una firma sobre las opciones y el origen (imgproxy firma toda la ruta después de la firma; Thumbor firma las opciones y la URL de la imagen) o una lista de transformaciones permitidas (el ajuste de transformaciones estrictas de Cloudinary). Una plantilla guardada que expone unas pocas variables limita qué opciones puede cambiar quien hace la solicitud, no cuántos valores acepta cada una: una plantilla con una variable de ancho sin restricciones sigue permitiendo el bucle, así que combínala con la firma o con una lista fija de valores permitidos. La firma depende de una clave secreta, por lo que tu servidor debe emitir las URL firmadas, en lugar de construirlas en código del navegador. Una firma bloquea nuevas variantes solo si cubre todas las opciones: imgix señala que un valor expires sin firmar se puede cambiar libremente en la cadena de consulta.
  2. ¿Dos URL que producen la misma salida comparten una entrada de caché? No lo des por hecho: depende de la clave de caché del servicio y de si normaliza las URL. CloudFront documenta que ?color=red&size=large y ?size=large&color=red se recuperan y se almacenan en caché por separado cuando usa parámetros de la cadena de consulta para la caché, y que las diferencias entre mayúsculas y minúsculas se tratan de la misma manera. La caché de la CDN de Cloudflare trata como distintas las cadenas de consulta con un orden diferente de forma predeterminada y tiene un ajuste opcional Query String Sort que las ordena antes de consultar la caché. La facturación sigue sus propias reglas: Cloudinary cuenta como transformaciones separadas las que se escriben de forma diferente, como los mismos parámetros en otro orden, aunque el resultado sea idéntico, y Cloudflare almacena en caché y factura por separado cada combinación única de imagen de origen y parámetros. Genera las URL desde una única función auxiliar que emita los parámetros en un orden fijo y con un uso uniforme de mayúsculas y minúsculas, y redondea los anchos solicitados a una lista breve de tamaños.
  3. ¿Qué ocurre con las variantes existentes cuando se reemplaza el archivo de origen? Pueden seguir sirviéndose porque sus URL no han cambiado. Cloudinary indica que, después de sobrescribir un recurso, las versiones entregadas, con o sin transformaciones, pueden permanecer en la caché de los servidores de la CDN a menos que se invaliden, y que también pueden quedar copias en navegadores y proxies fuera de su red. Recomienda un componente de versión en la URL cuando el archivo más reciente deba entregarse de inmediato. Si también firmas las URL, comprueba que la invalidación las alcance: Cloudinary no invalida las URL firmadas de forma predeterminada. imgproxy tiene una opción cachebuster que cambia la URL sin cambiar el procesamiento y la recomienda en lugar de una cadena de consulta porque se puede firmar. Prevé una de estas dos opciones antes del lanzamiento: una versión en la URL o en la ruta de origen, o un paso explícito de invalidación.

Cuándo importan las transformaciones por URL

Usa transformaciones por URL cuando no se puedan prever y generar de antemano todos los tamaños o variantes para un diseño adaptable. Las dimensiones sin límites o los parámetros sin firmar pueden permitir un procesamiento abusivo, la fragmentación de la caché y costos inesperados.

Cómo ayuda Transloadit con las transformaciones por URL

Smart CDN de Transloadit es un servicio de transformación por URL basado en Templates. En una URL tlcdn.com, el nombre de host identifica tu Workspace, la ruta identifica un Template guardado y el archivo de origen, y los parámetros de consulta asignan valores a las Assembly Variables que lee el Template, como ${fields.w} para un ancho. Los Steps de procesamiento están en el propio Template, por lo que quien hace la solicitud solo puede cambiar los valores que el Template expone. El ejemplo documentado pasa el parámetro de consulta w directamente al ancho de redimensionamiento, así que exponer una variable no limita por sí solo las solicitudes a los tamaños que usan tus páginas; Transloadit recomienda definir los parámetros que se pueden variar en las solicitudes y autorizarlas con URL firmadas. La firma es un HMAC que cubre el Workspace, el nombre del Template, la ruta del archivo y los parámetros de consulta ordenados, lo que impide que se alteren los parámetros, y debe generarse en tu backend porque usa tu Auth Secret.

La firma se describe como opcional, y las páginas enlazadas no explican cómo se rechazan las URL sin firmar, así que confírmalo en tu propio Workspace antes de confiar en las firmas para bloquear nuevas variantes. Las páginas tampoco describen una operación de purga ni qué ocurre con un resultado en caché cuando se reemplaza el archivo de origen bajo la misma ruta. Almacenar el reemplazo bajo una ruta nueva cambia la URL; prueba en tu propio Workspace el caso en que la ruta no cambia antes de confiar en ese comportamiento.

Explora las capacidades de entrega de Transloadit

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis