1

我有 blob 数据的大约 85000 张图像,我从处理程序生成它并作为图像数据类型存储到数据库中,现在当我将其渲染到网页中时,它的工作速度显然很慢,所以我想为这个可能缓存的解决方案找到一些中间解决方案,我认为它对我来说最好的解决方案所以任何人都可以给我一些关于这个的想法我的代码看起来像这样

public void ProcessRequest(HttpContext context)
    {

context.Response.OutputStream.Write(buffer, 0, byteSeq);
                byteSeq = strm.Read(buffer, 0, 8192);
}

和图像

     <img  src='<%# "handler/product?"+Email.Encryptdes(DataBinder.Eval(Container.DataItem,"product_id").ToString()) %>'/>

所以现在该怎么办我在 30 秒内看不到我的页面加载我应该为图像选择文件夹选项吗?

4

2 回答 2

4

您可以在处理程序本身中设置缓存,如下所示

context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(10));

因此,如果浏览器请求相同的数据,它会被缓存 10 分钟。

为了进一步改进,您可以将图像保存在本地文件夹中,然后设置路径。

几个有用的链接

  1. 如何在 .ashx 处理程序上使用输出缓存
  2. 在 .ashx 处理程序中缓存对象
  3. 如何在服务器端缓存 ASP.NET 自定义 HttpHandler 响应
于 2013-11-14T04:29:15.863 回答
1

您最好的方法是将图像存储在文件夹中,并将路径存储在数据库中

下一个选项是检查在一个页面加载时下载的图像的整体大小。尝试将其减少到最多约 10 张图像;将中继器的页面大小设置为 10。

您也可以添加缓存,但这不会以任何方式帮助您的网站的每个人加快第一页的加载速度,而且重要的是第一印象。

最后,将处理程序的 IsReusable 属性设置为 false ,除非您正在防御性地编码以防止多线程问题的可能性。

于 2013-11-14T05:06:04.980 回答