当使用AWS S3和CloudFront来部署静态网站时,有时候可能会遇到某些路径不会更新的问题。这可能是由于CloudFront的缓存机制导致的。下面是一个解决方法,其中包含一些代码示例来解决这个问题:
// 启用版本控制
var params = {
Bucket: 'your-bucket-name',
VersioningConfiguration: {
Status: 'Enabled'
}
};
s3.putBucketVersioning(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
createInvalidation
方法来使CloudFront的缓存无效化,以便立即获取更新的文件。以下是一个使用AWS SDK for JavaScript示例代码:// 使CloudFront缓存无效化
var params = {
DistributionId: 'your-distribution-id',
InvalidationBatch: {
CallerReference: 'your-unique-reference',
Paths: {
Quantity: 1,
Items: [
'/path/to/updated/file'
]
}
}
};
cloudfront.createInvalidation(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
Cache-Control
或Expires
响应头来控制缓存的时间。以下是一个例子,使用AWS CLI命令行接口:aws cloudfront update-distribution --id your-distribution-id --default-cache-behavior '{"DefaultTTL": 0, "MinTTL": 0, "MaxTTL": 0}'
这将将CloudFront的默认缓存时间(TTL)设置为零,即每次请求都会从源服务器获取最新的文件。
通过采用上述方法之一,您应该能够解决AWS S3 / CloudFront部署中静态网站上某些路径不更新的问题。