Установка метаданных при использовании s3cmd для загрузки статического веб-сайта в Amazon S3 - PullRequest
4 голосов
/ 03 апреля 2012

Я создаю статическую веб-страницу из уценки, используя Пеликан.Затем я загружаю вывод в S3, используя s3cmd:

s3cmd sync -rr --delete-removed output/ s3://mybucket/

К сожалению, метаданные для файлов CSS установлены неправильно, я должен вручную установить для них «text / css».Есть ли способ заставить s3cmd установить для них (и, возможно, других типов файлов) правильное значение?Или, если нет, есть ли альтернатива s3cmd, которая работает на Linux и MacOS X?

1 Ответ

4 голосов
/ 25 апреля 2012

Вы можете установить mime-тип файла при загрузке на s3 с помощью ключа -m

s3cmd -m text/css ./file.css s3:/path/to/bucket

Кроме того, я сначала сжимаю его с помощью gzip, а затем загружаю на s3, но вы также должны установить кодировку содержимого. Обратите внимание, что Chrome и Safari иногда не нравятся расширения .gz, поэтому я использую .jgz.

gzip file.css -9 -c > file.css.jgz
s3cmd -m text/css ./file.css s3:/path/to/bucket
s3cmd -m text/css --add-header "Content-Encoding:gzip" ./file.css.jgz s3:/path/to/bucket

Также обратите внимание, что в html-файле, который ссылается на этот CSS, вы должны проверить, что браузер может обрабатывать gzip. Вот пример в php:

<?php
  $css = "$PATH_TO_S3_BUCKET/file.css";
  if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) 
      $css .= '.jgz'; 

  echo "<link rel='stylesheet' type='text/css' href='$css'/>";
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...