Я хочу отправлять изображения, хранящиеся в MongoDB, с помощью GridFS через веб-приложение MVC4 в браузер через среду моей локальной сети, но до отправки изображения в браузер требуется ~ 500 мс.
Сетевой инспектор Google Chrome говорит, что большая часть времени тратится на «Ожидание», тогда как фактическое «Получение» занимает ~ 1 мс.
Сервер MongoDB находится в локальной сети, так почему же может так долго отправляться образ размером 10 КБ? Я использую Windows 8 с Visual Studio 2012 и официальным драйвером mongo-csharp через NuGet.
Вот мой код моего контроллера «Файлы», который принимает идентификатор объекта и отправляет данные для этого идентификатора:
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) })"/>
explain
из оболочки? Возможно, вам не хватает индекса или чего-то еще. - person Shane Andrade   schedule 13.02.2013explain
по вашему запросу? Или проверить задержку между вашим веб-сервером и вашим сервером mongodb? - person Shane Andrade   schedule 13.02.2013Explain()
для результатаgridFs.Find(Query.EQ("_id", bsonId))
: pastebin.com/bXeMX3hv - person NKnusperer   schedule 13.02.2013