3

ページのリクエストが届いたとき、たとえば、app.get("/")Amazons3から静的HTMLページを返したい場合。S3からリクエストして送信できることはわかっていますが、それは遅いようです。URLを変更せずにs3から直接ファイルを取得するようにリクエスターに指示する方法はありますか?

ありがとう。

それができない場合、s3からファイルを提供する最速の方法は何ですか?

このチュートリアルでは、最初にファイルを書き込む方法を示します

http://www.hacksparrow.com/node-js-amazon-s3-how-to-get-started.html

// We need the fs module so that we can write the stream to a file
var fs = require('fs');
// Set the file name for WriteStream
var file = fs.createWriteStream('slash-s3.jpg');
knox.getFile('slash.jpg', function(err, res) {
    res.on('data', function(data) { file.write(data); });
    res.on('end', function(chunk) { file.end(); });
});

最初にファイルを書き込まずにファイルを送信する方法はありますか?それを書くのはひどく遅いようです。

4

2 に答える 2

12

ご想像のとおり、URLを変更せずにリクエスターにS3から直接フェッチさせることはできません。リモートページをプロキシする必要があります。

var http = require('http'),
    express = require('express'),
    app = express();

app.get('/', function(req, res) {
  http.get('http://www.stackoverflow.com', function(proxyRes) {
    proxyRes.pipe(res);
  });
});

app.listen(8080);

リモートページをキャッシュして、パフォーマンスを向上させることができます。

于 2012-08-06T10:44:37.780 に答える
0

s3 ページが本当に静的な場合 (たとえば、めったに変更されない場合)、サーバーは最初に要求されたときにページをロードしてキャッシュすることができます。それはかなりの速度低下を引き起こさないでしょう。

それ以外の場合は、「URL を変更せずに」という要件を再考します。最も一般的な「解決策」は、一般的にフレームに関係するハックです。

于 2012-07-15T02:43:23.873 に答える