本頁討論如何將檔案轉成「gzip」壓縮狀態與解壓縮,內容包括轉碼概述、處理關聯中繼資料的最佳做法,以及 Cloud Storage 的壓縮檔行為。
轉碼和 gzip
gzip 是一種資料壓縮格式,一般用來減少檔案大小。這可以讓檔案的傳輸比未壓縮時快,且佔用的儲存空間較少。壓縮檔案有助減少成本和傳輸時間。Cloud Storage 的「轉碼」功能會自動變更檔案壓縮,再將檔案提供給要求者。當轉碼功能使檔案變成 gzip 壓縮時,這個檔案會被視為「壓縮」,反之,當產生的檔案不再是 gzip 壓縮狀態,就會被視為「解壓縮」。Cloud Storage 支援解壓縮格式的轉碼。
Cloud Storage 不支援 Brotli 壓縮物件的解壓縮轉碼。
解壓縮轉碼
解壓縮轉碼功能可讓您在 Cloud Storage 中儲存檔案的壓縮版本,降低靜態儲存費用,同時將未經壓縮的檔案提供給要求者。對於像是提供檔案給客戶的情況,此功能非常實用。
物件必須滿足兩項條件,才能使用解壓縮轉碼:
檔案以 gzip 壓縮格式儲存於 Cloud Storage。
物件的中繼資料包括
Content-Encoding: gzip。
當物件滿足這兩項條件,那麼就會在提供時進行解壓縮轉碼,且包含該物件的回應不會含有 Content-Encoding 或 Content-Length 標頭。
如要避免對符合條件的物件進行解壓縮轉碼,有兩種方法:
如果物件的要求包括
Accept-Encoding: gzip標頭,則針對此特定要求,物件會以原狀提供,並加上Content-Encoding: gzip回應標頭。如果物件的
Cache-Control中繼資料欄位設定為no-transform,則不論任何Accept-Encoding要求標頭為何,物件都會在所有後續要求中以壓縮物件的形式提供。
舉例來說,如果您想減少輸出資料傳輸費用或時間,或是想驗證下載的物件是否具有預期的 crc32c/md5 總和檢查碼,防止解壓縮轉碼就很有用。
注意事項
使用解壓縮轉碼時,請注意下列事項:
解壓縮轉碼會使完整性檢查失效。如果資料要求者需要使用檢查碼進行完整性檢查,請勿使用解壓縮轉碼。
解壓縮轉碼可讓您將物件以壓縮狀態儲存在 Cloud Storage 中,節省空間和成本。不過,物件的下載費用會以「解壓縮」大小為準,因為這才是提供物件的大小。
從 Cloud Storage FUSE 掛接值區內存取物件時,物件不會經過解壓縮轉碼,而是以壓縮格式讀取。
Content-Type 和 Content-Encoding 的比較
關於 Content-Type 和 Content-Encoding 與轉碼之間的關係,有幾個行為應該注意。這兩者都是隨物件一起儲存的中繼資料,請參閱查看及編輯物件中繼資料一文,瞭解如何將中繼資料新增到物件的逐步操作說明。
Content-Type 應包含在所有上傳作業中,並指示上傳中物件的類型。例如: