⚠️ Ceci est un site de traduction non officiel, sans lien avec ImageMagick Studio LLC. Pour des informations officielles, consultez la page originale (https://imagemagick.org/magick-cache/).

MagickCache (cache d'images)

MagickCache fournit des méthodes et des outils sécurisés pour mettre en cache des images, des séquences d'images, de la vidéo, de l'audio ou des métadonnées dans un dossier local. Tout contenu est mappé en mémoire pour une récupération efficace. Des gains d'efficacité supplémentaires sont possibles en récupérant une portion d'une image. Le contenu peut persister, ou vous pouvez lui attribuer une durée de vie (TTL) afin de le faire expirer automatiquement lorsque le TTL est dépassé. MagickCache prend en charge un contenu pratiquement illimité, jusqu'à des milliards d'images, ce qui le rend adapté à un service d'images web.

MagickCache fonctionne de concert avec ImageMagick. Téléchargez MagickCache et installez-le. Vous voudrez ensuite créer le cache et le remplir d'images, de vidéos et de métadonnées associées.

Créer un MagickCache

Il vous faut un endroit où stocker et récupérer votre contenu. Créons un cache sur notre système de fichiers local :

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

passkey.txt contient la clé d'accès (passkey) de votre cache. Ne perdez pas votre clé d'accès. Sans elle, vous ne pourrez pas identifier, faire expirer ni supprimer le contenu de votre cache.

Il suffit de créer un MagickCache une seule fois. Vous pouvez toutefois créer plusieurs MagickCache avec des chemins différents.

Une fois le MagickCache créé, vous voudrez le remplir d'un contenu comprenant des images, de la vidéo, de l'audio ou des métadonnées.

Mettre du contenu dans le MagickCache

Ajoutons une image de la distribution d'un film à notre cache nouvellement créé :

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

Notez que l'identifiant de l'image est un IRI composé de project /type /resource-path. Dans cet exemple, le project est movies, le type est image, et le resource path est mission-impossible/cast/rebecca-ferguson. Le chemin identifie de manière unique une ressource du cache. Deux images différentes ne peuvent pas être stockées avec le même resource path. Utilisez plutôt quelque chose comme mission-impossible/cast/20210508-rebecca-ferguson-1 et mission-impossible/cast/20210508-rebecca-ferguson-2.

Maintenant, définissons une clé d'accès de ressource et une durée de vie de 2 jours. À tout moment après le deuxième jour, l'image est automatiquement supprimée par la fonction expire. Pour obtenir, faire expirer ou supprimer l'image, vous devrez utiliser la même clé d'accès de ressource :

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

Où passkey.txt contient votre clé d'accès de ressource. Ne perdez pas votre clé d'accès. Sans elle, vous ne pourrez pas obtenir, identifier, faire expirer ni supprimer les ressources que vous possédez.

La clé d'accès de ressource garantit que vous seul et le propriétaire du cache pouvez accéder à votre image. Pour empêcher le propriétaire du cache d'en voir le contenu, brouillez-le avec :

$ 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

Notez que les blobs et les métadonnées sont stockés dans le cache en texte clair. Pour empêcher l'espionnage, brouillez le contenu avant de le stocker dans le cache.

Obtenir du contenu depuis le MagickCache

Vous voudrez tôt ou tard récupérer votre contenu ; récupérons notre image originale de la distribution depuis le cache :

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

Remarquez que l'image originale a été placée dans le cache au format JPEG. Ici, nous la convertissons commodément au format PNG au moment d'extraire l'image.

L'option -extract est utile lors de la récupération d'une image. Pour extraire une portion de l'image, spécifiez la largeur, la hauteur et le décalage de la tuile :

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

Pour redimensionner à la place, ne spécifiez pas le décalage :

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

Si votre image est brouillée, fournissez la phrase secrète (passphrase) pour la débrouiller :

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

Supprimer du contenu du MagickCache

Nous pouvons supprimer explicitement du contenu :

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

ou nous pouvons supprimer toutes les images de la distribution qui ont expiré (ayant dépassé leur durée de vie respective) ; essayez cette commande :

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

Identifier le contenu du MagickCache

Vous voudrez peut-être identifier tout le contenu que vous possédez :

$ 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

Chaque entrée comprend l'IRI, les dimensions de l'image pour les images, la taille du contenu en octets, la durée de vie, l'indication si la ressource a expiré (signalée par un *), et la date de création.

D'autres peuvent stocker du contenu dans le cache aux côtés du vôtre. Cependant, leur contenu ne vous est pas accessible. Vous ne pouvez pas obtenir, identifier, faire expirer ni supprimer du contenu que vous ne possédez pas, tel que déterminé par votre clé d'accès secrète.

Le propriétaire du MagickCache peut obtenir, identifier, faire expirer ou supprimer tout le contenu, y compris le contenu que vous possédez, avec cette commande, par exemple :

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

Notez que les ressources expirées sont annotées par un astérisque.

MagickCache n'est pas réservé aux images

En plus d'un type image, vous pouvez stocker le contenu de l'image sous sa forme originale, de la vidéo ou de l'audio en tant que type de contenu blob, ou des métadonnées avec un type de contenu meta :

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

ou

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

Les images doivent être dans un format que ImageMagick comprend. Les métadonnées doivent être du texte. Les blobs peuvent être n'importe quel contenu, y compris des images, de la vidéo, de l'audio ou des fichiers binaires.

Supprimer un MagickCache

Le propriétaire du MagickCache peut supprimer complètement tout le contenu d'un cache :

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

Soyez prudent : après cette commande, votre contenu mis en cache est irrévocablement perdu.

Sécurité

La sécurité de MagickCache n'est pas cryptographiquement forte. Au lieu de cela, elle génère un hachage unique pour chaque ressource, garantissant que l'ID de la ressource ne peut pas être découvert. Une ressource est accessible à la fois à l'utilisateur du cache et au propriétaire du cache, à condition qu'ils puissent présenter leurs clés d'accès respectives. Elle est également accessible à toute personne disposant de privilèges suffisants pour accéder au chemin disque du MagickCache.