【问题标题】:How to remove the browser cache?如何删除浏览器缓存?
【发布时间】:2010-12-28 04:25:51
【问题描述】:

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

谢谢!!!!!!

【问题讨论】:

    标签: php javascript browser caching


    【解决方案1】:

    您不想使用客户端检查来防止用户多次投票。这简直是​​愚蠢的。

    您想在服务器上检查用户是否已经为该图像投票,如果是,则将他们引导到一些“糟糕,您已经为该图像投票”页面并且不计票。

    【讨论】:

    • 投票未添加到数据库中,但我希望用户点击返回时获取新图像!他们当然不能多次投票......我不使用任何形式,我使用javascript和AJAX进行投票......
    • 即使你停止缓存,人们也会找到办法,也许是在新标签页中打开链接。您可以在图片页面上放置“给我新图片”链接,以便他们查看新图片。
    【解决方案2】:

    使用location.replace("URL_HERE"); 而不是location.href = "URL_HERE"; 将阻止重定向在用户历史记录中创建新条目。但我还是觉得Anon的回答是绝对正确的。

    【讨论】:

      【解决方案3】:

      如果“黑客”禁用了 JS 怎么办?

      我建议你做一些其他的事情:

      • 限制每 24 小时可以投票的图片数量
      • 将所有投票保留在 DB 中 24 小时
      • 给予注册用户更高的最大投票数限制

      【讨论】:

        【解决方案4】:

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

        image.php?id=1234 
        

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

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

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

        这不是灵丹妙药,但它是防止图像缓存的另一个技巧。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-14
          • 2012-04-22
          • 2013-07-17
          • 2017-04-14
          • 1970-01-01
          相关资源
          最近更新 更多