为要上传到AWS S3的图像设置Expires和Cache-Control标头

cin*_*l45 2 javascript amazon-s3 amazon-web-services node.js

我正在使用一个名为npm的软件包node-s3-client,该软件包是aws-sdkNode.js 的高级包装,用于将本地项目目录上载到S3存储桶。

使用包,我传递一些元数据到我的文件,即键值对ExpiresCache-Control。我正在上载包含HTML,JS,CSS,JPEG文件的整个目录。但是,当我检查我的S3存储桶时,我设置的标题仅适用于JS和CSS文件,而这些标题不适用于图像。

我已经阅读了软件包和aws-sdk的文档,但似乎找不到导致选择性地将我的元数据应用于某些文件而不应用于其他文件的原因。

这是我的配置对象:

const s3 = require('node-s3-client')

const s3Config= {
    localDir: './dist',
    deleteRemoved: false,
    s3Params: {
        Bucket: 'cdn',
        Prefix: 'dist/',
        Metadata: {
            'Cache-Control': 'max-age=31536000',
            'Expires': oneYearLater(new Date())
        }
    }
}

const client = s3.createClient({
    s3Options: {
        accessKeyId: KEY_ID,
        secretAccessKey: ACCESS_KEY,
        signatureVersion: 'v4',
        region: 'us-east-2',
        s3DisableBodySigning: true
    }
})

client.uploadDir(s3Config)
Run Code Online (Sandbox Code Playgroud)

是什么导致此问题?

Dan*_*tag 5

我认为您在如何设置对象上传参数方面存在问题。尝试:

const s3Config= {
    localDir: './dist',
    deleteRemoved: false,
    s3Params: {
        Bucket: 'cdn',
        Prefix: 'dist/',
        CacheControl: 'max-age=31536000',
        Expires: oneYearLater(new Date())
    }
}
Run Code Online (Sandbox Code Playgroud)