【问题标题】:web page cache setexpires网页缓存 setexpires
【发布时间】:2010-09-08 14:44:06
【问题描述】:

如果服务器上的时钟比客户端上的时钟早,下面的代码会起作用吗?

Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1))

编辑:我问的原因是在我们的一个网络应用程序上,一些用户声称他们正在查看以前使用该机器的用户的页面(帐号等)。然而,我们使用上面的代码和其他代码来“防止”这种情况发生。

【问题讨论】:

  • 我链接的问题说并不是所有的浏览器都像他们应该的那样尊重 HTTP 缓存指令,这就是为什么你需要设置几个属性来确保页面永远不会被缓存的原因。如果您想使用日期,为什么不选择过去的固定日期而不是 1 秒前。

标签: caching


【解决方案1】:

This question 涵盖确保网页没有被缓存。看来您必须设置几个属性以确保网页不会在所有浏览器中缓存。

【讨论】:

  • 是的,我明白这一点,我们确实遵循我只是想知道这种情况是否会发生的所有事情。 Response.Cache.SetNoStore() Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache) Response.AddHeader("Pragma", "No-Cache") '告诉代理服务器不要缓存页面。 Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1))
  • 如果您正在使用的用户一直在点击返回按钮怎么办?我在许多应用程序上看到浏览器不会往返服务器,只是从缓存中提取所有内容(甚至英国的一些在线银行机构也会这样做)。会不会是红鲱鱼?
【解决方案2】:

您的问题可能是由于浏览器记住了在表单字段中输入的数据。你可以这样关闭它:

<input autocomplete="off">

【讨论】:

  • 账户被加载到服务器端的列表框中。所以不确定这是否正在发生。不过谢谢
【解决方案3】:

据我所知,浏览器会根据本地时钟检查到期日期(尽管它会考虑时区),因此如果客户的时钟不准确,您问题中的代码可能无法按预期工作.最常见的情况是,当他们的时间看起来正确但设置为错误的时区时,就会发生这种情况,这意味着 UTC 时间戳实际上相差了几个小时。

您可以尝试设置一个更旧的时间戳,例如:0000 1970 年 1 月 1 日 GMT(纪元)

我认为您拥有的代码应该与服务器端缓存一起使用,但您可以更明确地禁用它:

Response.Cache.SetNoServerCaching();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2014-06-23
    • 2015-08-30
    • 1970-01-01
    相关资源
    最近更新 更多