寻找信息 - 我正在创建一个包含产品列表的catolog网站。每个产品都有一个存储在服务器硬盘上的图像。如果图像不存在,我想显示默认图像。这是最好的方法。我正在使用C#并考虑在服务器端检查图像是否存在。但是由于某些页面可能有50-60个图像,这会减慢页面速度。我在客户端使用jquery。关于这个的任何提示?
答案 0 :(得分:0)
听起来这是一个Web应用程序,所以你应该考虑做一些缓存。即使图像文件查找很昂贵,一旦您的页面被点击几次,将不再需要磁盘查找。
或者您可以存储有关数据库中是否存在产品图像的信息。然后使用信息预填充数据库,不需要进行磁盘检查。
答案 1 :(得分:0)
这是一个很好的问题,因为在很多情况下都会出现这种情况。我看到了几个选项:
1)在渲染目录期间检查图像可用性,并使用指向没有图像的项目的默认图像的链接,
2)检查图像控制器中的图像可用性,并在不可用时返回默认图像
3)使用数据网址将图像内嵌到文档中
这里的一个主要因素是缓存的可能性。
选项(1)有助于缓存默认图像,但排除了目录页面的缓存。如果有很多没有图像的项目会更好,那么这些项目甚至不会对服务器产生影响。此外,如果某个项目的图像显示的可能性很小,您也可以缓存索引(合理地)很短的时间)。
选项(2)有助于缓存索引页面,但每个图像都必须向服务器发送请求。同样,您可以使用积极的缓存来避免第二次呈现页面时的相同请求。
选项(3)最适用于图像较小且目录页面相对静态的情况。确保在生成页面时在服务器端使用缓存以减少文件系统/数据库的负载。
答案 2 :(得分:0)
你最好的选择是按照你的建议做这个服务器端。您可以在客户端执行此操作(尝试加载映像,并在失败时加载默认映像),但这并不是客户端脚本的设计目的。您正在让用户执行额外的HTTP请求,这对用户来说速度较慢。
正如marcind建议的那样,更好的解决方案是使用默认图像预填充数据库。因此,在CMS中,当您创建新项目时,它会为自己分配默认图像URL。然后,您可以从那里手动更改它。
答案 3 :(得分:0)
您的jQuery代码如何知道图像的名称?
看到您的图像文件是服务器上的物理文件并且可以从浏览器访问,我可能会保留该部分,因为这意味着您不必自己提供图像,IIS可以为您处理作为静态文件。
因此,您的jQuery代码显然知道每个产品的图像名称。我假设这个名称是由某个服务器端进程给出的,因此该进程需要为其提供产品图像的名称或默认图像。
您的代码的某些部分必须经历一个过程,即确定产品是否存在图像并做出相应的反应。如果您正在为产品使用数据库,那么您可以在产品表中添加一个字段,指示产品是否有图像。