2

MongoDBに保存された画像をGridFSでMVC4のWebアプリ経由でLAN環境経由でブラウザに送信したいのですが、画像がブラウザに送信されるまでに500ms程度かかります。

Google Chrome のネットワーク インスペクターによると、ほとんどの時間は「待機」中に費やされ、実際の「受信」には 1 ミリ秒ほどかかります。

MongoDB サーバーはローカル ネットワーク内にあるため、10kb のイメージを送信するのにこれほど時間がかかるのはなぜでしょうか? Visual Studio 2012 で Windows 8 を使用し、NuGet を介して公式の mongo-csharp-driver を使用しています。

これは、オブジェクト ID を受け取り、この ID のデータを送信する「ファイル」コントローラーのコードです。

public FileContentResult Files(string id)
{
    var database = new MongoClient(MyConnection).GetServer().GetDatabase("MyDB");
    var gridFs = new MongoGridFS(database);
    var bsonId = new BsonObjectId(id);
    var gridInfo = gridFs.FindOneById(bsonId);
    var bytes = GridInfoToArray(gridInfo);
    return new FileContentResult(bytes, "image/jpeg") { FileDownloadName = gridInfo.Name };
}

private byte[] GridInfoToArray(MongoGridFSFileInfo file)
{
    using (var stream = file.OpenRead())
    {
        var bytes = new byte[stream.Length];
        stream.Read(bytes, 0, (int)stream.Length);
        return bytes;
    }
}

ビューに画像を表示するコード:

<img src="@Url.Action("Files", new { id = objectIdOfMyImage) })"/>
4

1 に答える 1