我正在为大学开发一个JSP Web应用程序,用户页面中会显示一个人员图片。
用户退出后如何从网络浏览器缓存中清除此图片?
使用JSP或javascript
答案 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+"'/>");