Izinkan gzip pada file yang ada

Saya memiliki aset statis yang disimpan di GCS dan saya ingin menyajikannya dalam bentuk gzip (tetapi aset tersebut diunggah tanpa kompresi). Apakah ada cara untuk mengatur file agar dikompresi tanpa mengunduh dan mengunggahnya kembali dalam format gzip?

Saya mencoba menyetel header penyandian konten dengan gsutil (yaitu, gsutil setmeta -h 'Content-Encoding:gzip' <some_object_uri>, tetapi itu hanya menyebabkan "Layanan Tidak Tersedia" pada file (yang saya asumsikan berasal dari server yang mencoba melakukan ungzip file dan gagal atau semacamnya).


person Jeff Tratner    schedule 25.10.2014    source sumber


Jawaban (1)


Tidak ada cara untuk mengompresi objek tanpa mengunduhnya dan mengunggahnya kembali.

Namun, Anda dapat meminta gsutil melakukan hal ini untuk Anda, dan jika Anda menjalankannya dari Mesin Virtual (VM) Google Compute Engine (GCE), Anda hanya akan dikenakan biaya untuk jumlah operasi, bukan untuk bandwidth.

Selain itu, mengenai pengaturan header pengkodean konten dengan setmeta, interpretasi Anda benar tentang apa yang terjadi. Anda menyetel metadata pada objek untuk menunjukkan bahwa objek tersebut berisi data gzip, namun kontennya tidak berisi aliran gzip yang valid, sehingga saat Anda mencoba mengunduhnya dengan Accept-Encoding: gzip, layanan GCS mencoba mendekompresi aliran tersebut dan gagal.

Saya sarankan mengunduh bucket ke disk lokal di VM GCE:

gsutil cp -r gs://bucket /path/to/local/disk

Kemudian, gunakan opsi -z untuk menunjukkan ekstensi file mana yang akan digzip:

gsutil cp -z js,css,html -r /path/to/local/disk gs://bucket
person jterrace    schedule 27.10.2014
comment
hmm, saya kira saya bisa memanfaatkan API pemberitahuan objek untuk mengunduh dan kemudian mengunggah ulang file yang di-gzip setiap kali (karena saya menerima file melalui penangan blobstore App Engine). - person Jeff Tratner; 27.10.2014