[英]Refresh Image in JSP/ Avoiding cache
我正在Web项目上工作,我必须生成图像并在加载时将其显示在JSP页面上。 现在的问题是我必须使用相同的图像名称,因此浏览器始终使用缓存的图像,而不是新的图像。
Display.jsp
<html>
<head>
<script type="text/javascript">
updateImage(){
var img1 = document.getElementById("text");
img1.src="sun.png?time=".new Date().getTime();
}
</script>
</head>
<body onload="updateImage()">
<form action="com.CheckName" method="get">
<input type="button" value="submit" name="submit" />
<img src="sun.png" id="text">
</form>
</body>
</html>
通过单击按钮,将再次加载同一jsp页面。 我正在使用上面的代码,但仍然仅在下一页加载时才获得缓存(旧)图像。 我要去哪里错了。
请帮忙。
谢谢
由于使用的是JSP,因此可以使用System.currentTimeMillis()
附加当前时间。
替换为:
<img src="sun.png" id="text">
有了这个:
<img src="sun.png?time=<%=System.currentTimeMillis()%>" id="text">
我不建议您避免一直缓存它。 您可以添加当前版本号(或上次更改时间),而不是附加当前时间,因此用户不必在每次打开此页面时再次下载它。
您也可以使用javascript来做到这一点,但由于出现错误,您的代码无法正常工作。 使用+
代替.
连接字符串。
img1.src="sun.png?time=".new Date().getTime(); //wrong
img1.src="sun.png?time=" + new Date().getTime(); //ok!
请注意,因为仅在所有内容(包括图像)均已加载时才执行onload
。 这意味着您将在打开页面时获得缓存的版本(但一段时间后将加载非缓存的版本)。
还有其他方法,例如将无缓存标头设置为HTTP响应,但是我想这不是这个问题的重点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.