繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM