2
我想通过一个MVC4 Web应用程序使用GridFS将存储在MongoDB中的图像通过我的LAN环境发送到浏览器,但是直到图像发送到浏览器需要大约500ms的时间。为什么通过MVC4从GridFS发送文件需要很多时间?
Google Chrome网络检查员说大部分时间都是在“等待”期间花费的,而实际的“接收”需要大约1ms。
MongoDB服务器在本地网络中,那么发送10kb图像需要多长时间?我使用Windows 8和Visual Studio 2012以及通过NuGet的官方mongo-csharp驱动程序。
这是我的我的“文件”控制器的代码它接受一个对象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) })"/>
您的收藏中有多少条记录?另外,你有没有尝试在shell中运行'explain'?也许你错过了一个索引或其他东西。 – 2013-02-12 22:17:47
目前只有约10条测试记录 – NKnusperer 2013-02-12 22:19:22
如何在查询中运行'explain'?或者检查你的网络服务器和你的mongodb服务器之间的延迟? – 2013-02-12 23:14:14