2014-10-25 19 views
5

Mam przechowywane zasoby statyczne w GCS i chcę je obsłużyć gzipped (ale zostały przesłane bez kompresji). Czy istnieje sposób, aby ustawić pliki do skompresowania bez pobierania i ponownego przesyłania ich w formacie gzip?Zezwalaj na gzip na istniejących plikach

Próbowałem ustawić nagłówek kodowania treści za pomocą gsutil (tj. gsutil setmeta -h 'Content-Encoding:gzip' <some_object_uri>, ale po prostu doprowadziło to do "Service Unavailable" w pliku (który, jak przypuszczam, pochodzi od serwera próbującego rozpakować plik i nie działa, lub coś podobnego) że).

Odpowiedz

4

nie ma sposobu, aby skompresować obiektów bez ich i ponowne ładowanie pobraniem.

można jednak mieć gsutil to zrobić dla Ciebie, a jeśli uruchomić go z Compute Engine Google (GCE) Maszyna wirtualna (VM), naliczana będzie tylko opłata za liczenie operacji, a nie za przepustowość

Ponadto, jeśli chodzi o ustawianie nagłówka kodowania treści za pomocą setmeta, masz rację w swojej interpretacji tego, co się stało. Ustawiono metadane obiektu, aby wskazać, że zawiera ono dane gzip, ale zawartość nie zawierała prawidłowego strumienia gzip, więc przy próbie pobrania go za pomocą Accept-Encoding: gzip, usługa GCS próbuje rozpakować strumień i nie powiedzie się.

sugeruję pobieranie wiadro z dysku lokalnego na GCE VM:

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

Następnie należy wybrać opcję -z aby wskazać, który plik rozszerzenia do gzip:

gsutil cp -z js,css,html -r /path/to/local/disk gs://bucket 
+0

hmm, ja zgaduję, że mogłem skorzystać z interfejsu API powiadomień o obiektach, aby pobrać, a następnie ponownie przesłać plik gzipped za każdym razem (ponieważ akceptuję pliki za pomocą procedur obsługi blobstore App Engine). –

Powiązane problemy