同一页面多个相同图片重复加载?

时间:2022-11-05 20:41:32
有个页面内要显示部门所有人员姓名,排成一个矩形,每个姓名用相同的图片作为背景。
我不会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

#2


谢谢ldh911,周一我让他按你的思路改进看看。

图片不在数据库中,是文件。

#3


引用 2 楼  的回复:
谢谢ldh911,周一我让他按你的思路改进看看。

图片不在数据库中,是文件。


既然是文件,就不要再从Servlet中去获取了,直接把文件路径暴露出去好了,类似:
<img src="/img/face/xxxooo.jpg" >

甚至可以加前置Apache或EngineX,直接处理图片文件,性能比Weblogic或Tomcat高多了。

我们的系统架构中,Web前置是必备的,专门负责静态文件下载:图片、CSS、HTML、JS。


当然,结合你对安全性需求了,如果项目中这些图片涉及授权访问的问题,那另当别论。

#4


该回复于2015-01-17 17:00:21被管理员删除

#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

#2


谢谢ldh911,周一我让他按你的思路改进看看。

图片不在数据库中,是文件。

#3


引用 2 楼  的回复:
谢谢ldh911,周一我让他按你的思路改进看看。

图片不在数据库中,是文件。


既然是文件,就不要再从Servlet中去获取了,直接把文件路径暴露出去好了,类似:
<img src="/img/face/xxxooo.jpg" >

甚至可以加前置Apache或EngineX,直接处理图片文件,性能比Weblogic或Tomcat高多了。

我们的系统架构中,Web前置是必备的,专门负责静态文件下载:图片、CSS、HTML、JS。


当然,结合你对安全性需求了,如果项目中这些图片涉及授权访问的问题,那另当别论。

#4


该回复于2015-01-17 17:00:21被管理员删除