代码之家  ›  专栏  ›  技术社区  ›  David Brunelle

禁用特定页上的页缓存

  •  2
  • David Brunelle  · 技术社区  · 14 年前

    不确定我是否真的在正确的论坛,但如果不是,告诉我。我有一个网页是用asp(不是.net)编码的,用来发送电子邮件。我们现在遇到了一个问题,这个页面似乎有时会被发送两次。经过检查,我们发现有这个问题的人来自大的组织,所以有人建议他们的服务器可能出于某种原因缓存文件。

    我想知道,在html(或asp)中有没有防止这种情况发生的方法?或者是在iis中我们必须设置这个?

    编辑:我忘了说,有时,两封邮件之间的时间可以是几小时,而不仅仅是几秒钟

    谢谢,

    3 回复  |  直到 12 年前
        1
  •  1
  •   systempuntoout    14 年前

    我看这里没有任何缓存问题。

    我看到的唯一解决方案是将发送的电子邮件列表存储在服务器端(数据库、文件系统),并在发送之前检查列表。

    使用这种方法,您将确保只向指定地址发送一封邮件,以避免双重提交或其他可能的问题。

        2
  •  0
  •   Klaus Byskov Pedersen    14 年前

    我不明白这和缓存有什么关系。毕竟,缓存的页面包含生成的html,因此它不会触发发送电子邮件的代码的另一次执行。

    不过,我最好的猜测是,这与刷新页面的用户有关。为了避免这种情况,您可以实现post/redirect模式,在发送邮件后,您可以重定向到另一个页面(或同一个页面,但使用不同的表单参数)。这样,用户可以根据自己的需要多次刷新页面,而不会触发另一封电子邮件。

        3
  •  0
  •   AaronS    14 年前

    如果你的问题是缓存,你真的无法阻止一个组织缓存它。

    您可以尝试添加此代码以查看它是否有影响:

    Response.Expires = 0
    Response.Expiresabsolute = Now() - 1
    Response.AddHeader "pragma","no-cache"
    Response.AddHeader "cache-control","private"
    Response.CacheControl = "no-cache" 
    

    如果这不起作用,您可能需要联系该组织的IT部门,并要求他们为您的页面/站点添加缓存异常。