如何删除浏览器缓存?

时间:2009-12-18 20:43:38

标签: php javascript browser caching

我有一个图片网站,用户可以在其中投票。图像在第一页随机生成!一旦他们投票,他们就会使用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>

谢谢!!!!!

4 个答案:

答案 0 :(得分:7)

您不希望使用客户端检查来阻止用户多次投票。那太傻了。

您想在服务器上检查用户是否已经为该图片投票,如果是,请将他们引导至某些“您已经投票选择该页面的哎呀”并且不计算投票数。

答案 1 :(得分:0)

使用location.replace("URL_HERE");代替location.href = "URL_HERE";将阻止重定向在用户的历史记录中创建新条目。但我仍然认为Anon的答案绝对正确。

答案 2 :(得分:0)

如果“黑客”已经禁用JS会怎么样?

我建议您做其他一些事情:

  • 限制每24小时可以投票的图像数量
  • 将所有投票保留在DB中24小时
  • 向注册用户提供最高限额

答案 3 :(得分:0)

您需要动态地将图像提供给用户,而不是指向目录中的文件。所以你有一个

image.php?id=1234 

在image.php里面你几乎只是打开图像,uudecode它,并将其打印到浏览器。由于以编程方式检索图像,因此您可以简单地阻止它或在其上强制新图像。如果您不希望用户检索特定图像并希望始终提供随机图像,则不要在网址中使用ID,只需提供随机图像文件。

它还有助于在url中插入无用的随机数据,在这种情况下生成UUID将是一个好主意。因此,即使您使用的解决方案,也可以执行类似

的操作
print '<img src="'. $image .'?'. uniqid() .'">';

这不是银弹,但它是另一种阻止图像缓存的技巧。