[英]Clear image from browser cache in JSP or Javascript
我正在为一所大学开发一个JSP Web 应用程序,并且在用户页面中显示了人员图片。
用户注销后,如何从网络浏览器缓存中清除此图片?
使用 JSP 或 javascript
那是不可能的。 您最好的选择是完全禁用相关资源的缓存。 在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);
和 map 在覆盖感兴趣图像的 URL 图案上。
编辑:如果您实际上不关心浏览器缓存中存在的图像,但您的具体问题是不同的登录用户基本上使用相同的图像 URL 因为它是由某个 servlet 动态提供的,那么您也可以解决它通过为每个独特的用户提供独特的图像 URL。 例如,您可以通过将用户 ID 作为请求参数附加到图像 URL 或将其包含在图像路径中来执行此操作。
<img src="profileimage?id=${user.id}" />
或者
<img src="profileimage/${user.id}" />
这个问题显然没有区分客户端代码和服务器端代码。
一方面,当用户关闭 web 浏览器时,您无法清除缓存,因为浏览器已经消失。
也就是说,您可以跟踪图像更改和 append 图像 URL 的编号 - 这将强制 web 浏览器忽略缓存并加载新图像。
例子:
File filename = new File("/path/to/profile.png");
long t = filename.lastModified();
System.out.print("<img src='profile.png?"+t+"'/>");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.