我最近在 AppFog 上部署了我的 Node.js 博客。我计划在 Amazon S3 上使用存储桶来流式传输我的资产(javascript/样式表/图像)。
如何确保 Express.js 将静态资产获取到我的 Amazon S3 存储桶而不是常规存储桶/public
?
我最近在 AppFog 上部署了我的 Node.js 博客。我计划在 Amazon S3 上使用存储桶来流式传输我的资产(javascript/样式表/图像)。
如何确保 Express.js 将静态资产获取到我的 Amazon S3 存储桶而不是常规存储桶/public
?
我不会通过节点服务器流式传输资产——这是一种资源浪费,而且您将不得不处理 HTTP 缓存标头。
相反,您的 HTML 应直接链接到 S3 存储桶。代替:
<script src="/js/script.js"></script>
做:
<script src="//s3.amazonaws.com/bucket/js/script.js"></script>
鉴于您正在迁移,只需设置一个永久重定向。
app.get(/^\/(js|css|images)\/.*/, function(req, res) {
res.redirect(301, '//s3.amazonaws.com/bucket' + req.path);
});
这会将 js、css 和 images 文件夹中的所有请求重定向到 S3 存储桶。例如,/js/script.js 将重定向到 //s3.amazonaws.com/bucket/js/script.js。
这将有助于简化转换,但您仍应将站点的引用迁移到 S3 URL,以消除由于重定向造成的不必要的 HTTP 往返原因。
如果您确实需要这样做,请使用请求库中的 pipe(): https ://github.com/mikeal/request#streaming