2

我有一个有效的 ASP.Net Web 服务,它使用 System.Web.HttpContext.Current.Cache(插入和获取)缓存结果。出于测试目的,我在 Web 服务结果中显示了时间。

在同一个浏览器上,它会正确缓存并且在我设置的 1 分钟到期之前不会刷新。

如果我在另一个浏览器(即使在同一台机器上)运行相同的 Web 服务,它会返回一个不同的时间,然后每分钟正确缓存。以前的浏览器仍然显示其旧结果(直到时间到期)。

使用 Safari 在 iPhone 上进行测试做同样的事情(与其他两种浏览器不同的缓存结果)。

为什么每个浏览器的缓存结果不同?我对缓存有点陌生,所以我显然在这里遗漏了一些东西。我正在尝试为每个人缓存结果,而不仅仅是同一浏览器上的同一个人。我希望任何浏览器中的所有用户返回的时间都是相同的。

这是我运行的代码:

 HttpContext.Current.Cache.Insert("GetIDList", sJSON, Nothing, DateTime.Now.AddMinutes(1), Cache.NoSlidingExpiration)

我错过了什么?

4

2 回答 2

2

您正在为当前请求设置 HttpContext 对象。这就是为什么每个浏览器都有自己的缓存集并且您看到每个用户的时间不同的原因。您可以将其设置为httpContext.cache并将缓存设置为当前应用程序域。MSDN

这无论如何都使用 HttpRuntime.cache 来进行缓存,所以无论如何都要使用 HttpRuntime.cache。

使用MSDN为当前应用程序设置缓存httpRuntime.cache

HttpRuntime.Cache.Insert("GetIDList", sJSON, Nothing, DateTime.Now.AddMinutes(1), Cache.NoSlidingExpiration)

这里还有另一篇文章有​​助于更好地解释 httpContext.Cache Vs HttpRuntime.Cache 。

我希望这有帮助。

于 2014-12-18T21:51:29.973 回答
0

缓存存储在客户端的浏览器中,所以基本上你只是告诉服务器在调用插入方法时将缓存对象存储在用户的浏览器中。MSDN 有一些关于利用缓存的可靠文档:http: //msdn.microsoft.com/en-us/library/xsbfdd8c.aspx

于 2014-12-18T21:37:36.727 回答