我有一个数据库,它将.png图像存储为sql“image”类型。我有一些代码将这些图像作为byte []检索,并通过.Net中的FileContentResult对象将它们发送到页面。性能是此应用程序的关键,并且图像必须尽快检索和显示。我的问题是,可以通过将数据库中的字节流传递给浏览器来更快地执行此操作,而不是在任何时候将整个字节数组存储在内存中。如果这是可行的和值得的,我该怎么做?使用流在C#中使用mssql获取图像
这里是我到目前为止的代码:
// Get: /Image/Get/5
public FileResult Get(int id)
{
Response.Cache.SetExpires(DateTime.Now.AddSeconds(300));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
// Get full size image by PageId.
return base.File(page.getFullsizeImage(id), "image/png");
}
而且
public byte[] getFullsizeImage(int pageId)
{
return (from t in tPage
// Filter on pageId.
where t.PageId == pageId
select t.Image).Single().ToArray();
}
感谢您的帮助!
好的。那真的是我想要的。我将在IIS缓存上做一些测试,看看它是否改善了处理。感谢所有的答复。 – shaw2thefloor 2010-09-13 13:20:37
如果你这样做,我会建议你在高负载下做一些非常彻底的测试。 ASP.NET缓存很好,但是@Aliostad已经提到,它确实很满。考虑使用分布式的进程外高速缓存,如NCache,Memcached或Velocity,最好在专用的高速缓存服务器场中使用。 – 2010-09-13 13:29:21