⚠️ Este es un sitio de traducción no oficial, sin relación con ImageMagick Studio LLC. Para información autorizada, consulte la página original (https://imagemagick.org/magick-cache/).

MagickCache (caché de imágenes)

MagickCache ofrece métodos y herramientas seguros para almacenar en caché imágenes, secuencias de imágenes, vídeo, audio o metadatos en una carpeta local. Todo el contenido se mapea en memoria para una recuperación eficiente. Es posible lograr aún más eficiencia recuperando una porción de una imagen. El contenido puede persistir, o puede asignar un tiempo de vida (TTL) para que el contenido expire automáticamente cuando se supere el TTL. MagickCache admite contenido prácticamente ilimitado, de hasta miles de millones de imágenes, lo que lo hace adecuado como servicio web de imágenes.

MagickCache funciona en conjunto con ImageMagick. Descargue MagickCache e instálelo. A continuación querrá crear la caché y poblarla con imágenes, vídeo y metadatos asociados.

Crear una MagickCache

Necesitará un lugar para almacenar y recuperar su contenido. Creemos una caché en nuestro sistema de archivos local:

$ magick-cache -passkey passkey.txt create /opt/magick-cache

Donde passkey.txt contiene la passkey de su caché. No pierda su passkey. Sin ella, no podrá identificar, expirar ni eliminar contenido de su caché.

Solo necesita crear una MagickCache una vez. No obstante, puede crear más de una MagickCache con rutas diferentes.

Una vez creada la MagickCache, querrá poblar la caché con contenido que incluya imágenes, vídeo, audio o metadatos.

Poner contenido en la MagickCache

Agreguemos una imagen del reparto de una película a nuestra caché recién creada:

$ magick-cache put /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.jpg

Tenga en cuenta que el identificador de la imagen es un IRI compuesto por project /type /resource-path. En este ejemplo, el project es movies, el type es image, y el resource path es mission-impossible/cast/rebecca-ferguson. La ruta identifica de forma única un recurso de la caché. No se pueden almacenar dos imágenes diferentes con el mismo resource path. En su lugar, use algo como mission-impossible/cast/20210508-rebecca-ferguson-1 y mission-impossible/cast/20210508-rebecca-ferguson-2.

Ahora, establezcamos una passkey de recurso y un tiempo de vida de 2 días. En cualquier momento después del segundo día, la imagen se elimina automáticamente con la función expire. Para obtener, expirar o eliminar la imagen, deberá usar la misma passkey de recurso:

$ magick-cache -passkey passkey.txt -ttl "2 days" put /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.jpg

Donde passkey.txt contiene su passkey de recurso. No pierda su passkey. Sin ella, no podrá obtener, identificar, expirar ni eliminar los recursos que posee.

La passkey de recurso garantiza que solo usted y el propietario de la caché puedan acceder a su imagen. Para evitar que el propietario de la caché vea su contenido, mézclelo con:

$ magick-cache -passkey passkey.txt -passphrase passphrase.txt -ttl "2 days" put /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.jpg

Tenga en cuenta que los blobs y los metadatos se almacenan en la caché en texto plano. Para evitar el fisgoneo, mezcle el contenido antes de almacenarlo en la caché.

Obtener contenido de la MagickCache

Tarde o temprano querrá recuperar su contenido; obtengamos nuestra imagen original del reparto desde la caché:

$ magick-cache -passkey passkey.txt get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png

Observe que la imagen original se puso en la caché en formato JPEG. Aquí la convertimos cómodamente al formato PNG al extraer la imagen.

La opción -extract es útil al recuperar una imagen. Para extraer una porción de la imagen, especifique el ancho, el alto y el desplazamiento del mosaico:

$ magick-cache -passkey passkey.txt -extract 100x100+0+0 get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png

Para redimensionar en su lugar, no especifique el desplazamiento:

$ magick-cache -passkey passkey.txt -extract 100x100 get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png

Si su imagen está mezclada, proporcione la passphrase para revertir la mezcla:

$ magick-cache -passkey passkey.txt -passphrase passphrase.txt get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png

Eliminar contenido de la MagickCache

Podemos eliminar contenido explícitamente:

$ magick-cache -passkey passkey.txt delete /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson

o podemos eliminar todas las imágenes del reparto que hayan expirado (que hayan superado su respectivo tiempo de vida); pruebe este comando:

$ magick-cache -passkey passkey.txt expire /opt/magick-cache movies/image/mission-impossible/cast

Identificar el contenido de la MagickCache

Quizá quiera identificar todo el contenido que posee:

$ magick-cache -passkey passkey.txt identify /opt/magick-cache movies/image/mission-impossible/cast
movies/image/mission-impossible/cast/rebecca-ferguson[1368x912] 406B 1:0:0:0 2021-05-30T17:41:42Z
identified 1 resources

Cada entrada incluye el IRI, las dimensiones de la imagen en el caso de las imágenes, el tamaño del contenido en bytes, el tiempo de vida, si el recurso está expirado (indicado con un *) y la fecha de creación.

Otros pueden almacenar contenido en la caché junto al suyo. Sin embargo, su contenido no está disponible para usted. No puede obtener, identificar, expirar ni eliminar contenido que no posea, según lo determine su passkey secreta.

El propietario de la MagickCache puede obtener, identificar, expirar o eliminar todo el contenido, incluido el que usted posee, con este comando, por ejemplo:

$ magick-cache -passkey passkey.txt identify /opt/magick-cache /

Tenga en cuenta que los recursos expirados se anotan con un asterisco.

MagickCache no es solo para imágenes

Además del type image, puede almacenar el contenido de la imagen en su forma original, vídeo o audio como content type blob, o metadatos con un content type meta:

$ magick-cache -passkey passkey.txt put /opt/magick-cache movies/blob/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.mp4

o

$ magick-cache -passkey passkey.txt put /opt/magick-cache movies/meta/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.txt

Las imágenes deben estar en un formato que ImageMagick entienda. Los metadatos deben ser texto. Los blobs pueden ser cualquier contenido, incluidas imágenes, vídeo, audio o archivos binarios.

Eliminar una MagickCache

El propietario de la MagickCache puede eliminar por completo todo el contenido de una caché:

$ magick-cache -passkey passkey.txt delete /opt/magick-cache /

Tenga cuidado: después de este comando, su contenido en caché se pierde de forma irrevocable.

Seguridad

La seguridad de MagickCache no es criptográficamente fuerte. En su lugar, genera un hash único para cada recurso, garantizando que el ID del recurso no pueda descubrirse. Un recurso es accesible tanto para el usuario de la caché como para el propietario de la caché, siempre que puedan presentar sus respectivas passkeys. También es accesible para cualquiera que tenga privilegios suficientes para acceder a la ruta de disco de la MagickCache.