使用Express.js从Amazon S3流式传输资产(JS/CSS /图像)

jpm*_*tte 4 javascript amazon-s3 node.js express appfog

我最近在AppFog上部署了我的Node.js博客.我打算在Amazon S3上使用一个存储桶来传输我的资产(javascript/stylesheets/images).

如何确保Express.js获取静态资产到我的Amazon S3存储桶而不是常规/public

jos*_*736 8

我不会通过节点服务器流式传输资产 - 这会浪费资源,而且您将不得不处理HTTP缓存标头.

相反,您的HTML应该直接链接到S3存储桶.代替:

<script src="/js/script.js"></script>
Run Code Online (Sandbox Code Playgroud)

做:

<script src="//s3.amazonaws.com/bucket/js/script.js"></script>
Run Code Online (Sandbox Code Playgroud)

鉴于您正在迁移,只需设置永久重定向即可.

app.get(/^\/(js|css|images)\/.*/, function(req, res) {
    res.redirect(301, '//s3.amazonaws.com/bucket' + req.path);
});
Run Code Online (Sandbox Code Playgroud)

这会将js,css和images文件夹中的所有请求重定向到S3存储桶.例如,/ js/script.js将重定向到//s3.amazonaws.com/bucket/js/script.js.

这将有助于简化转换,但您仍应迁移站点对S3 URL的引用,以通过重定向消除不必要的HTTP往返原因.