我不会java,下属编了个java程序实现上述需求,但我测试发现2个人的部门和40个人的部门加载速度相差极大,由此推断相同图片文件被反复加载了(人数次)。
检查客户端internet临时文件夹,没有图片的临时文件。
请问这可能是什么原因造成的?如何解决?
4 个解决方案
#1
尽量不要用Servlet去显示图片,而是直接访问图片,这种性能最高而且浏览器能自动缓存。
当然你的图片可能在数据库中,导致你不得不用Servlet去展示,那么做到这两步:
1、让路径更像是图片
Servlet映射时,映射到一个路径上,而不是指定Servlet加Get参数。
比如原来的写法可能是:
<img src="/imgServlet?id=xxooxxoo" >
整改后页面请求图片的URL就可以直接写为:
<img src="/imgServlet/xxooxxoo.jpg" >
2、在HTTP头中,增加缓存建议,类似于:
Expires:Mon, 09 May 2022 22:51:31 GMT
当然你的图片可能在数据库中,导致你不得不用Servlet去展示,那么做到这两步:
1、让路径更像是图片
Servlet映射时,映射到一个路径上,而不是指定Servlet加Get参数。
比如原来的写法可能是:
<img src="/imgServlet?id=xxooxxoo" >
整改后页面请求图片的URL就可以直接写为:
<img src="/imgServlet/xxooxxoo.jpg" >
2、在HTTP头中,增加缓存建议,类似于:
Expires:Mon, 09 May 2022 22:51:31 GMT
#2
谢谢ldh911,周一我让他按你的思路改进看看。
图片不在数据库中,是文件。
图片不在数据库中,是文件。
#3
既然是文件,就不要再从Servlet中去获取了,直接把文件路径暴露出去好了,类似:
<img src="/img/face/xxxooo.jpg" >
甚至可以加前置Apache或EngineX,直接处理图片文件,性能比Weblogic或Tomcat高多了。
我们的系统架构中,Web前置是必备的,专门负责静态文件下载:图片、CSS、HTML、JS。
当然,结合你对安全性需求了,如果项目中这些图片涉及授权访问的问题,那另当别论。
#4
#1
尽量不要用Servlet去显示图片,而是直接访问图片,这种性能最高而且浏览器能自动缓存。
当然你的图片可能在数据库中,导致你不得不用Servlet去展示,那么做到这两步:
1、让路径更像是图片
Servlet映射时,映射到一个路径上,而不是指定Servlet加Get参数。
比如原来的写法可能是:
<img src="/imgServlet?id=xxooxxoo" >
整改后页面请求图片的URL就可以直接写为:
<img src="/imgServlet/xxooxxoo.jpg" >
2、在HTTP头中,增加缓存建议,类似于:
Expires:Mon, 09 May 2022 22:51:31 GMT
当然你的图片可能在数据库中,导致你不得不用Servlet去展示,那么做到这两步:
1、让路径更像是图片
Servlet映射时,映射到一个路径上,而不是指定Servlet加Get参数。
比如原来的写法可能是:
<img src="/imgServlet?id=xxooxxoo" >
整改后页面请求图片的URL就可以直接写为:
<img src="/imgServlet/xxooxxoo.jpg" >
2、在HTTP头中,增加缓存建议,类似于:
Expires:Mon, 09 May 2022 22:51:31 GMT
#2
谢谢ldh911,周一我让他按你的思路改进看看。
图片不在数据库中,是文件。
图片不在数据库中,是文件。
#3
既然是文件,就不要再从Servlet中去获取了,直接把文件路径暴露出去好了,类似:
<img src="/img/face/xxxooo.jpg" >
甚至可以加前置Apache或EngineX,直接处理图片文件,性能比Weblogic或Tomcat高多了。
我们的系统架构中,Web前置是必备的,专门负责静态文件下载:图片、CSS、HTML、JS。
当然,结合你对安全性需求了,如果项目中这些图片涉及授权访问的问题,那另当别论。