【问题标题】:OutputCache behaving strangelyOutputCache 行为异常
【发布时间】:2010-10-14 20:58:40
【问题描述】:
protected void Page_Load(object sender, EventArgs e)
{Label1.Text = DateTime.Now.ToString();}

如果在我编译这个新创建的应用程序后,浏览器 B1 是 先请求Cache.aspx,然后接收页面显示时间 是 10.16:20。 如果说 10 秒后,我刷新 B1 的 Cache.aspx( 通过单击 按钮导致回发),然后时间 10.16.30 将显示,然后 所有后续回发 10.16.30 将始终显示(直到 1 小时过去了)。 如果在 B1 首次请求 Cache.aspx 几分钟后,浏览器 B2 也 请求相同的页面,然后在收到第一个页面时 时间,B2 的 Cache.aspx 将显示时间 10.16.20,并且在所有 将显示后续 B2 的回发时间 10.16:30。

A) 所以看起来 Asp.net 生成了两个缓存版本的 Cache.aspx(因此代码被执行两次),给出一个缓存页面 到第一次请求 Cache.aspx 的浏览器,第二次 缓存页面提供给只刷新其 Cache.aspx 的浏览器?

B)由于我的书中从未提到过这种行为,我想知道您是否 得到相同的行为还是我的网络环境再次“独特”?

C) 创建同一页面的两个副本(因此执行代码两次) 似乎是在浪费时间,为什么 Asp.Net 会这样操作—— 这背后一定有一些道理/好处?

谢谢你

【问题讨论】:

  • 您确定所有涉及的 URL 都相同,甚至连字符大小写都相同?
  • ASP.NET 确实为不同的浏览器生成不同的标记。我不确定它是否会影响 。
  • >您确定所有涉及的 URL 都相同,甚至连字符大小写都相同?是的,因为我将 URL 从一个浏览器复制到另一个 >ASP.NET 确实为不同的浏览器生成了不同的标记......我不确定我明白你在说什么,但我在所有测试中都使用了 firefox

标签: c# .net asp.net caching


【解决方案1】:

一个完整的猜测,但大概缓存被整个请求(查询字符串参数等)隔离......即使“none”关闭键/值对,大概“GET”仍然被计算在内与“POST”不同???

尝试使用简单的链接(<a href...> 等)而不是 ASP.NET 按钮。

【讨论】:

    【解决方案2】:

    如果我尝试 if (ispostback) 开始 response.cache.setcachebility(无缓存) 结束

    然后按钮点击每次都会更新标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 2012-12-05
      • 2017-01-22
      • 2013-04-14
      • 2014-01-29
      • 1970-01-01
      相关资源
      最近更新 更多