ฉันต้องการส่งภาพที่เก็บไว้ใน MongoDB โดยใช้ GridFS ผ่านแอป MVC4 Web ไปยังเบราว์เซอร์ผ่านสภาพแวดล้อม LAN ของฉัน แต่ใช้เวลาประมาณ ~ 500ms ก่อนที่รูปภาพจะถูกส่งไปยังเบราว์เซอร์
ผู้ตรวจสอบเครือข่าย Google Chrome บอกว่าเวลาส่วนใหญ่ถูกใช้ไประหว่าง "รอ" ในขณะที่ "การรับ" จริงใช้เวลาประมาณ ~1 มิลลิวินาที
เซิร์ฟเวอร์ MongoDB อยู่ในเครือข่ายท้องถิ่น ดังนั้นการส่งอิมเมจขนาด 10kb จะใช้เวลานานขนาดไหน ฉันใช้ Windows 8 กับ Visual Studio 2012 และไดรเวอร์ mongo-csharp-driver อย่างเป็นทางการผ่าน 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