我的情况是这样的:渲染图像在asp.net MVC
我创建一个返回三列基于存储过程O自定义报告(为person_id [长],名[VARCHAR(100)],年龄[INT ],照片[图片])。这些是我的数据库表中的列和类型。
现在我为报告的每个图像使用类似的东西。
<img src="<%= Url.Action("ShowImage", "Reports", new {personId = result["PERSON_ID"]}) %>" />
与ShowImage是
public virtual ActionResult ShowImage(long? personId)
{
try
{
if (personId.HasValue)
{
byte[] imageArray = StudentClient.GetPersonPhotoById(personId.Value);
if (imageArray == null)
return File(noPhotoArray, "image/jpg");
#region Validate that the uploaded picture is an image - temporary code
// Get Mime Type
byte[] buffer = new byte[256];
buffer = imageArray.Take(imageArray.Length >= 256 ? 256 : imageArray.Length).ToArray();
var mimeType = UrlmonMimeType.GetMimeType(buffer);
if (String.IsNullOrEmpty(mimeType) || mimeType.IndexOf("image") == -1)
return File(noPhotoArray, "image/jpg");
#endregion
return File(imageArray, "image/jpg");
}
}
catch
{
return File(noPhotoArray, "image/jpg");
}
}
我想用某种替代的,因为这是非常stresful由于该ShowImage()调用服务方法StudentClient.GetPersonPhotoById(personId.Value );对于每一张照片来说,这意味着分配给服务和数据库的呼叫也是这样。
我想实际使用该照片列返回一个字节数组,而不是通过ShowImage控制器方法使用Person_id列。
这将实际上减少对服务的调用次数为0,并使用图像列中的实际数据。这看起来很简单,但我很难找到解决方案。
谢谢!
只有当他们是小图像,甚至那么有用性是有争议的。您绕过了用户和服务器之间的所有缓存机制(服务器,代理,浏览器)。 –