4

我最近在 AppFog 上部署了我的 Node.js 博客。我计划在 Amazon S3 上使用存储桶来流式传输我的资产(javascript/样式表/图像)。

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

4

2 回答 2

8

我不会通过节点服务器流式传输资产——这是一种资源浪费,而且您将不得不处理 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 往返原因。

于 2013-02-07T03:47:00.647 回答
0

如果您确实需要这样做,请使用请求库中的 pipe(): https ://github.com/mikeal/request#streaming

于 2013-02-07T03:36:19.750 回答