Javascript 通过jqueryajax上传和加载图像

Javascript 通过jqueryajax上传和加载图像,javascript,jquery,asp.net,asp-classic,Javascript,Jquery,Asp.net,Asp Classic,所以,让我更好地解释一下,我很确定这个标题说的不多 我负责改进公司的制度。现在,系统将当前图像保存为文件,并将图像路径插入数据库 那么,如果它起作用,有什么问题?好吧,如果服务器一直插入大量图像,那么服务器将需要一些改进,因此我的第一个想法是,为什么不将图像数据保存到数据库中,并通过ajax调用加载它呢?这很好,它不会让服务器因图像中的大量千兆字节而过载,不会出现重复等问题,但是当我从jQuery调用ajax方法时,发送到服务器端的数据是通过查询字符串发送的,如果数据超过6000个字符,就像我使

所以,让我更好地解释一下,我很确定这个标题说的不多

我负责改进公司的制度。现在,系统将当前图像保存为文件,并将图像路径插入数据库

那么,如果它起作用,有什么问题?好吧,如果服务器一直插入大量图像,那么服务器将需要一些改进,因此我的第一个想法是,为什么不将图像数据保存到数据库中,并通过ajax调用加载它呢?这很好,它不会让服务器因图像中的大量千兆字节而过载,不会出现重复等问题,但是当我从jQuery调用ajax方法时,发送到服务器端的数据是通过查询字符串发送的,如果数据超过6000个字符,就像我使用base64编码时的大多数情况一样,我不能调用该方法

我的另一个想法是,将图像发送到服务器端,然后生成数据保存到数据库,当用户想要查看图像时,服务器将数据转换为图像并发送到客户端。但是问题是,这个系统有很多用户,发送/接收大量图像会使服务器由于大量的请求而出现内存问题

因此,长话短说,在不过载服务器容量的情况下,从客户端到服务器发送/接收图像的最佳方式是什么

旁白:很抱歉发了这么长的帖子,我想提出一个明确的问题


提前感谢。

服务器将在数据库中存储更多图像。大多数web服务器非常高效地提供静态文件(如图像)

在尝试解决问题之前,您必须对问题进行更多思考:

  • 您的问题是带宽过载吗?在上传之前尝试调整图像客户端的大小(您可以使用PlUpload等工具)。如果您不能,至少在服务器端调整它们的大小,使其服务更小,并节省下载带宽

  • 您的问题是硬盘空间过载吗?再次调整镜像客户端到服务器端的大小

  • 您的问题是CPU过载吗?尝试确定导致峰值的根代码。请注意,大量的请求将导致高CPU,您可能需要一个更强大的服务器(或另一个Web服务器)


数据库中的图像几乎总是一个坏主意,以base64发送所有内容将使您的带宽账单增加约33%。将图像存储在文件系统中,只需将图像的路径存储在数据库中,然后您就可以使用标准的
标记轻松地加载它们。首先,感谢您的快速回答,其次,您认为当我在服务器端保存图像以减少硬盘上的空间量时,压缩图像是否值得?这是一个全天候的系统,在服务器/客户端之间不断地交换图像,所以我想这会使服务器过载。@MarcB:一个重要的补充是注意图像不应该直接保存在web应用程序的物理文件夹中。相反,您可以将它们保存到一个单独的共享中,并通过url facade进行公开,可能由单独的服务器处理。如果操作得当,这将提高安全性和性能。@WiktorZychla我完全不理解您所说的“将它们保存到单独的共享中并通过url外观公开”是什么意思。你的意思是我将把图像加载到另一个web服务器,然后从那里我将图像保存在一个单独的目录中,当我想加载时,我使用web服务器加载它?我不是这个领域的专家,所以请不要生气。谢谢。我的问题是服务器和客户端之间的图像流量太大。当我上传图像时,它将使用web服务器将图像存储在文件夹中,并将路径插入数据库。因此,每次用户请求图像时,我都会从数据库中加载路径,然后从文件夹中获取正确的图像发送到客户端。但是想象一下,如果在10分钟内,500个客户因为恐慌而一遍又一遍地做同样的请求。它将使数据库中的请求过载,并使服务器上的图像流量过载。这就是为什么我考虑在客户端渲染。由于我无法完成我的评论,我感谢您的回答,我将使用web服务器管理图像并在数据库中插入路径。对客户来说,拥有一个快速的网站比让客户遭受大量渲染等痛苦更有用。谢谢,你打开了我的心扉。很抱歉没有投票给你,我的声誉还不够好。你可以使用缓存来避免对数据库造成太大的冲击。关于请求,您可以使用CDN,但这可能有点过分了