我正在执行Visual Studio Online
发布任务中的cp来更改--cache-control
元数据,但同时还将文件的内容类型更改为text/plain
。
这是命令:
s3://sourcefolder/ s3://sourcefolder/ --exclude "*" --
include "*.js" --include "*.png" --include "*.css" --include
"*.jpg" --include "*.gif" --include "*.eot" --include
"*.ttf" --include "*.svg" --include "*.woff" --include
"*.woff2" --recursive --metadata-directive REPLACE --cache-
control max-age=2592000,private
在执行此命令之前,我的javascript文件具有正确的内容类型:text/javascript
,但是在执行此命令后,它更改为text/plain
。如何避免这种情况?
答案 0 :(得分:2)
我看不到针对您的特定用例的一种方法。这主要是因为不同的文件具有不同的内容类型值。我认为aws s3 cp或aws s3同步操作对您不起作用。这是由--metadata-directive REPLACE标志引起的,该标志实际上删除了所有元数据,并且由于您未提供content-type,因此默认为text / plain。但是,如果您将其设置为text / javascript,则所有文件都将在其元数据中包含该文件,这显然不适用于图像和CSS文件。
但是,我将提出一个适合您的解决方案。请尝试使用最新版本的s3cmd usage,因为它具有Modify命令,您可以按以下方式使用它:
./s3cmd --recursive modify --add-header="Cache-Control:max-age=25920" \
--exclude "*" \
--include ... \
s3://yourbucket/
有关s3cmd使用情况和可用标志的更多信息-> package