我有一个 .NET MVC 应用程序,我需要在其中显示带有一些文本的图像列表。图像和文本存储在同一个表中的数据库中,并在我的简单模型中返回。我还没有弄清楚的是如何显示所有这些图像,而无需为每张图像再次访问数据库。
我看到几个例子,比如:
- ASP.NET MVC: loading images from database and displaying their in view
- Problem with displaying image from DB using asp.net MVC 2
和其他人,但他们都会为每张图片返回数据库。这没有意义,因为可能有几十张图像,而且我不想在我的模型中已经返回图像数据时继续对数据库进行单次调用。
我是 ASP.NET MVC 的新手(之前也从未使用过存储在数据库中的图像),我想我只是遗漏了一些东西,而且它不会这么难。如果有人解决了这个问题,我很想听听,我认为其他人也会,基于这里已经存在的其他问题。
最佳答案
只是多次访问数据库。我曾经认为将图像与文本一起加载到缓存中,然后在服务时使缓存失效是一个聪明的主意。我还必须生成随机 URL 以避免不同的用户使彼此的缓存无效。我认为减少数据库查询的数量非常聪明。
我现在为这种“聪明”感到羞愧,我没有告诉任何人。除非你有实际的性能问题,否则不要考虑它。
通过设置适当的 header 来实现客户端缓存很重要。图像在客户端缓存比在服务器缓存更好,因为即使您在服务器缓存,如果您不在客户端缓存,您仍然会受到网络传输的影响。
此外,通过主键访问数据库(我假设这就是您检索图像的方式)并不是一项昂贵的操作,除非图像超过 2MB,否则我也不担心从数据库传输到 Web 服务器的问题。
编辑:我刚刚告诉大家我的耻辱:(
关于c# - ASP.NET MVC 显示来自数据库的多个图像。如何高效地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9536051/