一般情况下,会把图像放到一个特殊的目录下,而数据库里面只要存放图像的路经,就可以很简单的把图像从页面上显示出来。但是有些情况下,想把图像放到数据库里,需要的时候再读取出来。
这样就出了问题,怎样把图像发送到客户端。1.解决方法:
平时大家使用的一种方法就是把读取图片的功能封装到一个httphandle里面(jsp里面是servlet),把图片的连接指向这个httphandle。
  问题:
这种方法有个缺点,就是再读取图片的时候,必须再进行一次查询,也就是说,如果有个列表,一次查询有100个记录,如果没有图片的话,一次查询就可以返回100个记录,但是如果每个记录都带有一个图片的话,那么就必须每个图片再查询一次,那就是101次。
2.解决方法:
一次查询,并把图片放到临时目录里,页面指明图片路经。问题:
这种方法,和把图片放到一个特殊目录里,数据库里面只存路经也没什么区别,而且还增加了写盘的操作。
现在一种解决方案,就是说查询只要一次,返回所有的记录,当然也包括二进制的图片的字段(image字段,或者varbinary(MAX)字段)。然后图片数据驻留内存,然后当页面里请求图片时,传送到客户端。现在想听听大家的意见。
请踊跃发言。

解决方案 »

  1.   

    平时大家使用的一种方法就是把读取图片的功能封装到一个httphandle里面
    ————————————————————————————————————————
    我没有看见过仅仅为了显示图片就如此兴师动众的做法,不知“平时大家”从何而来。一个aspx页面显示的时候,可以从Cache或者Session中获取数据,其key键值来自于url参数,这Cache或者Session存储并不需要两次查询数据库或者磁盘文件。
      

  2.   

    sp1234(天气真好,心情越来越好) ( ) 信誉:100    Blog  2006-11-26 14:07:07  得分: 0  
     
     
       平时大家使用的一种方法就是把读取图片的功能封装到一个httphandle里面
    ————————————————————————————————————————
    我没有看见过仅仅为了显示图片就如此兴师动众的做法,不知“平时大家”从何而来。一个aspx页面显示的时候,可以从Cache或者Session中获取数据,其key键值来自于url参数,这Cache或者Session存储并不需要两次查询数据库或者磁盘文件。
      ----------------------------------------------------------------------------sorry,也许是我主观臆断,我以前没做过asp.net,所以对于aspx页面的储存能力理解不足。
    不过即使是这样,我想返回图片的部分也是借助了本身这个aspx页面的。如果这样的话,还不如单独使用一个httphandle来管理session中的图片返回比较清晰。