问题标签 [httpcontext.cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2805 浏览

c# - 了解 HttpContext.Current.Cache

我一直在对网站进行一些更改,并注意到当我在数据库中进行更改时,即。添加新的人员值,该人员的姓名不会出现在下拉列表中。

如果我多次重置应用程序池,这个名称最终会出现在我面前。尽管对其他人似乎并不总是如此。

它似乎确实受到缓存的严重控制,我发现了以下内容:

我注意到这里有一些值得关注的值,

缓存会在 30 分钟后过期并插入新人的姓名,还是不会因为 DateTime.MaxValue 而过期。

有任何想法吗?

0 投票
0 回答
198 浏览

asp.net-mvc - MVC HttpContext.Current.Cache 获取随机对象

如何从缓存中获取随机对象?我真正想要的是每次访问缓存时获取不同的对象,但随机对象也很好。

0 投票
2 回答
1794 浏览

asp.net - System.Web.HttpContext.Current.Cache 在不同的浏览器中返回不同的结果

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

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

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

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

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

这是我运行的代码:

我错过了什么?

0 投票
1 回答
803 浏览

c# - 为什么我必须将我的对象两次放入 HttpContext 缓存中,然后才能将其永久保存?

当我将对象缓存到 时HttpContext Cache,我的对象在下一次读取时消失,我必须第二次重新插入该对象(并非总是如此,但 90% 的时间)。在那之后,对象就没有任何问题地呆在那里。

这是发生的事情:

  1. 开始调试mvc项目
  2. 从缓存中读取年龄
  3. 年龄为空,所以我将 50 放入变量中,然后将其插入缓存中
  4. 对客户端的CacheItemRemovedCallback响应完成后立即执行。CacheItemRemovedReason值为_Removed
  5. 用户点击立即刷新
  6. 从缓存中读取年龄
  7. 年龄仍然为空,所以我将 50 放入变量中,然后将其插入缓存中
  8. 用户点击立即刷新
  9. 从缓存中读取年龄
  10. 年龄终于到了!

那么为什么Cache在第一次插入时将对象保留在缓存中呢?

这种行为存在于.Net framework 3.5, 4.0, 4.5, 4.5.2.

这是代码:

0 投票
1 回答
231 浏览

c# - MVC 5 HttpContext.Current.Cache 方法在同时被 2 个线程命中时失败

我正在使用以下服务方法来缓存查询结果:

在某个页面中,该方法被 2 个线程同时调用(因为我需要将整个产品集合显示两次,但使用不同的过滤器)。

奇怪的是,我第一次启动应用程序时,只有一个线程“获胜”并接收产品列表,而另一个接收 null。如果我刷新页面,它们都开始正常工作(因为此时它们从缓存中获取结果),但第一次它只是一个或另一个,它们永远不会同时工作。

我还尝试将整个代码包装在 Lock 语句中,但它并没有改变任何事情。我错过了什么?

0 投票
1 回答
356 浏览

c# - 在 Asp.net 站点中安排 HTTP 请求

每天晚上我的 HTTPContext.Current.Cache 都会被清除。我想在晚上 X 时间预热站点并用数据填充缓存。

由于我使用 HTTPContext,因此必须在网站内运行。我目前正在通过单击站点上的一个简单按钮来启动缓存,然后在几分钟的时间范围内异步填充缓存。

我已经寻找了一个解决方案,其中选项并没有像我想象的那样轻松完成工作:

System.Timers不断轮询。它似乎也没有设置我希望它运行的特定时间的选项?

Quartz看起来有点矫枉过正,但或许可以胜任。尽管需要阅读以使其正常工作。

RegisterWaitForSingleObject也可以工作,但这里也只有一个计时器?也不确定您是否可以检查是否已经创建了一个对象,因此存在创建许多对象的风险。创建对象后也不更改计时器。

浏览它们的速度相对较快,所以可能是错误的。您对从站点内运行预定的 http 请求有何看法?

[编辑] 错字。

0 投票
1 回答
356 浏览

c# - System.Resources.Resourcemanager 是线程安全的吗?

我的 Web 应用程序,当用户使用不同的文化登录时,它的内容部分呈现不正确的文化。

此 Asp.net Web 应用程序将 ResourceManager 缓存在 HttpContext.Current.Cache 中。Resourcemanager GetString 在内部使用 Hashtable 来存储/检索资源字符串。

ResourceManager 的线程安全性如何?