MagickCache 提供安全的方法和工具,可在本地資料夾中快取影像、影像序列、影片、音訊或中繼資料。任何內容都經過記憶體映射,以便有效率地檢索。透過檢索影像的一部分,可以提高效率。內容可以永久保存,或者您可以設定存留時間 (TTL),以便在超過 TTL 時自動讓內容過期。MagickCache 支援幾乎無限的內容,高達數十億張影像,使其適合作為網路影像服務。
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。路徑唯一標識快取資源。兩個不同的影像不能儲存在相同的資源路徑下。請改用 mission-impossible/cast/20210508-rebecca-ferguson-1 和 mission-impossible/cast/20210508-rebecca-ferguson-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 磁碟路徑的人也可以存取這些資源。