Я хочу отправить изображения, хранящиеся в MongoDB, используя GridFS через веб-приложение MVC4 в браузер через среду локальной сети, но требуется ~ 500 мс, пока изображение не будет отправлено в браузер.Почему передача файлов из GridFS через MVC4 занимает так много времени?
Сетевой инспектор Google Chrome говорит, что большая часть времени проводится во время «Ожидания», а фактическое «получение» занимает ~ 1 мс.
Сервер MongoDB находится в локальной сети, так что может занять так много времени, чтобы отправить изображение 10 КБ? Я использую Windows 8 с Visual Studio 2012 и официальный mongo-csharp-драйвер через NuGet.
Вот мой код моего контроллера «Files», который принимает идентификатор объекта и передает данные для этого 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) })"/>
Сколько записей в вашей коллекции? Кроме того, вы пытались запустить 'объяснение' на оболочке? Возможно, вам не хватает указателя или чего-то еще. –
В настоящее время существует только ~ 10 записей для тестирования – NKnusperer
Как насчет запуска 'объяснения' по вашему запросу? Или проверить задержку между вашим веб-сервером и вашим сервером mongodb? –