我正在开发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页面再次加载。 我正在使用上面的代码,但我仍然只在下一页加载时缓存(旧)图像。哪里出错了。
请帮忙。
由于
答案 0 :(得分:1)
由于您使用的是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响应中设置no-cache标头,但我想这不是这个问题的重点。