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) })"/>