我有一个显示图像缩略图屏幕的应用程序,每个图像大约80k,它们存储在数据库中。为了使响应时间合理,应用程序在首次启动时显示占位符图像,然后从服务器下载图像。我希望一次在屏幕上显示大约40张图像,这就是我的批量大小。将这些图像提供给客户的最佳方法是什么?我有两个选择。
创建一个ADO.NET数据服务,将Images数据库表公开给客户端。客户端可以一次一个地异步请求图像,并在它们从服务器返回时显示它们。我已经实现了这个解决方案,似乎工作正常;速度不是很快,我觉得我可以通过一次请求3张图片来更好地利用Http管道。
在服务器上创建一个HttpModule,查找类似于/Images/1.jpg的请求,然后读取数据库并返回请求的数据。在客户端,我可以有许多Image对象,其源指向服务器上的虚拟Url。我的理论是,通过给Silverlight许多Urls来处理它可能比我在选项1中的代码更有效地传输图像。
这些方法中的任何一种都会更有效率,还是有其他技术可以完成这项工作?谢谢!
答案 0 :(得分:2)
我不知道它是否更有效,但我使用HTTP处理程序(ashx)完成了一项非常类似的任务。处理程序根据uri中的参数(图像ID)从数据库中提取图像,然后Silverlight通过将Image控件的Source属性设置为具有我想要的特定ID的处理程序的URI来异步提取它们。查询字符串。反过来,Image控件位于ItemsControl内部,允许我显示多个图像。
答案 1 :(得分:0)
我们正在做一些非常相似的事情,我们只是使用ASPX页面来为它们提供图像标识符的查询参数。我们也在缓存图像,ASPX页面将使用缓存的值(如果存在)。如果没有,我们将其从数据存储中提取,缓存并发送。它对我们来说非常好。
答案 2 :(得分:0)