在JSP或Javascript中清除浏览器缓存中的图像

时间:2011-06-06 22:03:13

标签: javascript jsp

我正在为大学开发一个JSP Web应用程序,用户页面中会显示一个人员图片。

用户退出后如何从网络浏览器缓存中清除此图片?

使用JSP或javascript

2 个答案:

答案 0 :(得分:6)

那是不可能的。最好的办法是完全禁用相关资源的缓存。创建filter,在doFilter()方法中执行以下作业。

HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setHeader("Cache-Control", "no-cache,no-store,must-revalidate");
hsr.setHeader("Pragma", "no-cache");
hsr.setDateHeader("Expires", 0);
chain.doFilter(request, response);

并将其映射到覆盖感兴趣图像的网址图案上。


编辑如果实际不关心浏览器缓存中存在的图片,但您的具体问题是不同的登录用户基本上使用相同的图像URL因为它是由某个servlet动态提供的,所以您也可以通过为每个唯一用户提供唯一的图像URL来解决它。您可以通过将用户ID作为请求参数附加到图像URL,或将其包含在图像的路径中来完成此操作。

<img src="profileimage?id=${user.id}" />

<img src="profileimage/${user.id}" />

答案 1 :(得分:1)

问题显然不区分客户端和服务器端代码。

首先,当用户关闭Web浏览器时,您无法清除缓存,因为浏览器已经消失。

也就是说,您可以跟踪图像更改并在图像URL上附加一个数字 - 这将强制Web浏览器忽略缓存并加载新图像。

示例:

File filename = new File("/path/to/profile.png");
long t = filename.lastModified();
System.out.print("<img src='profile.png?"+t+"'/>");