MagickCacheは、画像、画像シーケンス、ビデオ、オーディオ、またはメタデータをローカルフォルダにキャッシュするための安全な方法とツールを提供します。すべてのコンテンツは、効率的な取得のためにメモリマップされます。画像の一部を取得することで、さらなる効率化が可能です。コンテンツは永続化することも、有効期限(TTL)を割り当てて、TTLを超えたときにコンテンツを自動的に期限切れにすることもできます。 MagickCacheは、数十億枚の画像まで事実上無制限のコンテンツをサポートしているため、Web画像サービスとして適しています。
MagickCacheは、ImageMagickと連携して動作します。MagickCacheをダウンロードしてインストールしてください。次に、キャッシュを作成し、画像、ビデオ、および関連するメタデータを入力します。
MagickCacheの作成
コンテンツを保存および取得するための場所が必要です。ローカルファイルシステムにキャッシュを作成しましょう。
$ magick-cache -passkey passkey.txt create /opt/magick-cache
ここで、`passkey.txt`にはキャッシュのパスキーが含まれています。パスキーを紛失しないでください。パスキーがないと、キャッシュ内のコンテンツを識別、期限切れ、または削除できません。
MagickCacheの作成は一度だけ必要です。ただし、異なるパスで複数のMagickCacheを作成できます。
MagickCacheを作成したら、画像、ビデオ、オーディオ、またはメタデータを含むコンテンツをキャッシュに設定します。
MagickCacheにコンテンツを入れる
新しく作成したキャッシュに映画のキャスト画像を追加しましょう。
$ magick-cache put /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.jpg
画像識別子は、*プロジェクト*/*タイプ*/*リソースパス*で構成されるIRIであることに注意してください。この例では、プロジェクトはmovies、タイプはimage、リソースパスはmission-impossible/cast/rebecca-fergusonです。パスは、キャッシュリソースを一意に識別します。同じリソースパスに2つの異なる画像を保存することはできません。mission-impossible/cast/20210508-rebecca-ferguson-1やmission-impossible/cast/20210508-rebecca-ferguson-2のように使用してください。
次に、リソースパスキーと有効期限を2日に設定します。2日目以降はいつでも、expire関数を使用して画像が自動的に削除されます。画像を取得、期限切れ、または削除するには、同じリソースパスキーを使用する必要があります。
$ magick-cache -passkey passkey.txt -ttl "2 days" put /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.jpg
ここで、passkey.txtにはリソースパスキーが含まれています。パスキーを紛失しないでください。パスキーがないと、所有するリソースを取得、識別、期限切れ、または削除できません。
リソースパスキーを使用すると、あなたとキャッシュ所有者だけが画像にアクセスできます。キャッシュ所有者がそのコンテンツを表示できないようにするには、次の方法でスクランブルします。
$ 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
BLOBとメタデータは、キャッシュにプレーンテキストで保存されることに注意してください。スヌーピングを防ぐために、コンテンツをキャッシュに保存する前にスクランブルしてください。
MagickCacheからコンテンツを取得する
最終的にはコンテンツを取得する必要があります。元のキャスト画像をキャッシュから取得しましょう。
$ magick-cache -passkey passkey.txt get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png
元の画像はJPEG形式でキャッシュに配置されていることに注意してください。ここでは、画像を抽出するときにPNG形式に便利に変換します。
-extractオプションは、画像を取得するときに便利です。画像の一部を抽出するには、タイルの幅、高さ、およびオフセットを指定します。
$ magick-cache -passkey passkey.txt -extract 100x100+0+0 get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png
代わりにサイズ変更するには、オフセットを指定しないでください。
$ magick-cache -passkey passkey.txt -extract 100x100 get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png
画像がスクランブルされている場合は、パスフレーズを提供してスクランブルを解除します。
$ magick-cache -passkey passkey.txt -passphrase passphrase.txt get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png
MagickCacheからコンテンツを削除する
コンテンツを明示的に削除できます。
$ magick-cache -passkey passkey.txt delete /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson
または、有効期限が切れた(それぞれの有効期限を超えた)すべてのキャスト画像を削除できます。次のコマンドを試してください。
$ magick-cache -passkey passkey.txt expire /opt/magick-cache movies/image/mission-impossible/cast
MagickCacheコンテンツの識別
おそらく、あなたが所有するすべてのコンテンツを識別したいと思うでしょう。
$ 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
各エントリには、IRI、画像の画像寸法、バイト単位のコンテンツ範囲、有効期限、リソースの有効期限が切れているかどうか( `*`で示されます)、および作成日が含まれます。
他の人は、コンテンツをあなたのコンテンツと一緒にキャッシュに保存できます。ただし、そのコンテンツはあなたには利用できません。秘密のパスキーによって決定される、所有していないコンテンツを取得、識別、期限切れ、または削除することはできません。
MagickCacheの所有者は、たとえば、次のコマンドを使用して、所有しているコンテンツを含むすべてのコンテンツを取得、識別、期限切れ、または削除できます。
$ magick-cache -passkey passkey.txt identify /opt/magick-cache /
期限切れのリソースにはアスタリスクが付いていることに注意してください。
MagickCacheは画像だけのものではありません
imageタイプの他に、画像コンテンツを元の形式、ビデオ、またはオーディオをコンテンツタイプblobとして、またはメタデータをコンテンツタイプmetaとして保存できます。
$ magick-cache -passkey passkey.txt put /opt/magick-cache movies/blob/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.mp4
または
$ magick-cache -passkey passkey.txt put /opt/magick-cache movies/meta/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.txt
画像は、ImageMagickが理解できる形式である必要があります。メタデータはテキストである必要があります。BLOBは、画像、ビデオ、オーディオ、またはバイナリファイルを含む任意のコンテンツにすることができます。
MagickCacheの削除
MagickCacheの所有者は、キャッシュ内のすべてのコンテンツを完全に削除できます。
$ magick-cache -passkey passkey.txt delete /opt/magick-cache /
注意してください、このコマンドの後、キャッシュされたコンテンツは完全に失われます。
セキュリティ
MagickCacheのセキュリティは、暗号的に強力ではありません。代わりに、各リソースに一意のハッシュを生成し、リソースIDを検出できないようにします。リソースは、それぞれのパスキーを提示できる限り、キャッシュのユーザーとキャッシュ所有者の両方がアクセスできます。また、MagickCacheディスクパスにアクセスするための十分な権限を持つすべての人がアクセスできます。