4

最近、Node.jsブログをAppFogにデプロイしました。Amazon S3のバケットを使用して、アセット(javascript / stylesheets / images)をストリーミングする予定です。

Express.jsが通常のアセットではなく静的アセットをAmazonS3バケットに確実に取得するにはどうすればよい/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 に答える