如何删除浏览器缓存?
问题描述:
我有一个图像网站,用户可以投票图像。第一页随机生成图像!一旦他们投票,他们将使用window.location重定向到图像详细信息页面。如果他们点击回来,他们会从浏览器缓存中看到相同的图像...并且他们可以无限次地投票...如何删除浏览器缓存?
如何删除缓存?当我点击返回按钮时,我想要刷新第一页!我已经使用:
<meta http-equiv="Pragma" content="no-cache">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="Expires" CONTENT="-1">
和
<input type="hidden" id="refreshed" value="no">
<script type="text/javascript">
onload=function(){
var e=document.getElementById("refreshed");
if(e.value=="no")e.value="yes";
else{e.value="no";location.reload();}
}
</script>
谢谢!!!!!
答
您不想使用客户端检查来防止用户投票多次。这太愚蠢了。
你想在服务器上检查用户是否已经对该图像进行投票,如果是,请将它们指向某些“你已经投票支持该页面的哎呀”并且不计票。
答
使用location.replace("URL_HERE");
而不是location.href = "URL_HERE";
将阻止重定向在用户的历史记录中创建新条目。但我仍然认为阿农的回答是绝对正确的。
答
给予注册
那么如果“黑客”已禁用JS呢?
我会建议你做一些其他的东西:24小时
- 限制图像的一个可以投票选出每24小时
- 量保持在数据库中的所有选票用户更高的最大票数限制
答
您需要动态地将图像提供给用户,而不是指向目录中的文件。所以你有一个
image.php?id=1234
里面image.php你几乎只是打开图像,uudecode它,并打印到浏览器。由于图像是以编程方式检索的,因此您可以简单地将其阻挡或在其上强制新图像。如果您不希望用户检索特定图像并希望始终提供随机图像,则不要在网址中使用任何ID,只需提供随机图像文件即可。
它也有助于坚持在URL中无用的随机数据,在这种情况下生成一个UUID将是一个好主意。即使你走这么一个解决方案,只是不会再像做
print '<img src="'. $image .'?'. uniqid() .'">';
这已经不是什么灵丹妙药,但它的另一个伎俩,以防止图像缓存。
投票没有添加到数据库中,但我希望用户点击后可以获取新图片!当然,他们不能投多次.... 我不使用任何形式,我使用JavaScript和AJAX的投票.. – FinalDestiny 2009-12-18 20:48:30
@FinalDestiny我不认为你得到的重点。 – 2009-12-18 20:49:15
即使您停止缓存,人们也可以通过在新标签中打开链接找到方法。您可以在图像页面上放置“给我新图像”链接,以便他们查看新图像。 – sakabako 2009-12-18 21:24:45