问题标签 [system.web.caching]

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 回答
223 浏览

asp.net - 使用泛型进行巧妙的缓存?

在 System.Web.Caching.Cache 类之上是否有任何聪明的层来处理使用泛型获取项目的简单场景。

我可能想提供一个委托函数来检索一个项目,并且能够使用强类型 GetItem 和一个委托函数来获取一个项目,如果它没有找到的话。

例如

我还想要一种处理只处理单个对象的缓存的好方法。

ASP.NET Cache 对象看起来非常原始。它看起来就像一个带有超时的哈希表。对于我所关心的,他们不妨将其称为 HashtableWithTimeout。我想要一些更好的吸引力。这是缓存应用程序块将为我做的事情吗?

是的,我知道这是相当简单的代码,我现在只是没有时间重新发明任何轮子。

0 投票
3 回答
9924 浏览

.net - Cache.Add 绝对过期 - 是否基于 UTC?

Cache.Add的示例用于计算DateTime.Now.Add过期时间,即通过:

作为absoluteExpiration参数的值。

我曾认为相对于它的计算DateTime.UtcNow会更正确[因为如果夏令时开始于现在和到期点之间的中间时间,则没有歧义]。

在引入DateTimeKind.

在 .NET 2.0 及更高版本中,我猜测它应该正确处理DateTime计算,DateTime.UtcNow.AddSeconds(60)因为它必须DateTime.Kind在其推理中用作输入。

多年来,我一直自信地使用DateTime.UtcNow它作为基础,但在没有任何东西指出文档在 4 年多来一直高度误导的情况下,这绝对是正确的做法。

问题?

  1. 尽管有很多狂欢和谷歌搜索,但我无法从 MS 找到任何关于此的权威讨论 - 任何人都可以找到有关此的内容吗?
  2. 为什么使用 UtcNow 不会更正确和/或更安全?

(是的,我可以仔细阅读源和/或 Reflector 的源,但我正在寻找一个完整的逐个打击的内幕!)

0 投票
1 回答
3629 浏览

c# - System.Web.Caching.Cache.NoSlidingExpiration in asp.net c#

请告诉我System.Web.Caching.Cache.NoSlidingExpiration在 ASP.NET 中的情况。

0 投票
2 回答
2190 浏览

asp.net - System.Web.Caching.Cache 似乎没有按时刷新自己?

System.Web.Caching.Cache在我的网站使用的程序集中使用。我已将一些密钥过期(绝对过期)设置为 10 秒(仅用于调试)。我还设置了删除键时的回调。

问题是我看到缓存在大约 20 秒而不是 10 秒后被刷新。

我正在使用HttpRuntime.Cache这个。

关于为什么会发生这种情况的任何建议?

我想展示一个代码示例,它可以提供更多信息:

在这里,我使用了Page.Cache. 更新应该是每 3 秒。实际上它每 40 秒执行一次,如下面的打印输出所示:

Updated Cache at 1/28/2011 1:38:20 AM Updated Cache at 1/28/2011 1:38:40 AM Updated Cache at 1/28/2011 1:39:00 AM Updated Cache at 1/28/2011 1:39:20 AM Updated Cache at 1/28/2011 1:39:40 AM Updated Cache at 1/28/2011 1:40:00 AM Updated Cache at 1/28/2011 1:40:20 AM Updated Cache at 1/28/2011 1:40:40 AM Updated Cache at 1/28/2011 1:41:00 AM Updated Cache at 1/28/2011 1:41:20 AM Updated Cache at 1/28/2011 1:41:40 AM Updated Cache at 1/28/2011 1:42:00 AM Updated Cache at 1/28/2011 1:42:20 AM Updated Cache at 1/28/2011 1:42:40 AM

可能是什么问题呢 ?

0 投票
2 回答
22468 浏览

asp.net-mvc-2 - 如何检查缓存(System.Web.Cache)中是否存在项目?

你好,

要检查密钥是否已存在于缓存中,我应该能够执行以下操作:

然而这不起作用?如果我从 Cache 类创建一个实例,我将能够以这种方式获取对象:

但即使我像这样检查 null :

它会抛出 NullRefException 吗?

我究竟做错了什么?

编辑1:

这就是我实例化缓存的方式

0 投票
1 回答
85 浏览

visual-studio-2005 - 在运行 IIS 5.1 的 XP 上使用 Web.Caching 不可用?

环境:我在 IIS6 上运行的 ASP.Net 2.0 网站上工作;我正在使用 VS2005 和 VB 在运行 IIS 5.1 的 WinXP 上进行本地开发。

问题:我正在尝试使用 System.web.caching.cache 为某些业务层对象(实际上是创建一个缓存层)创建缓存。这应该在 System.Web 命名空间下可用,但我似乎可以访问的是:AspNetHostingPermission、AspNetHostingPermissionAttribute 和 AspNetHostingPermissionLevel(我在项目中引用了 System.Web 并在类中导入)。还有很多其他类(例如,HTTPRuntime)也没有出现(这是根据“使用 SQL 缓存依赖项”教程http://www.asp.net/web-forms/tutorials/data-access/caching -data/using-sql-cache-dependencies-vb)。

我已经走到了尽头,似乎找不到任何东西来解释这一点。有没有人遇到过这种情况并且以前见过这种情况?非常感谢任何帮助解决这个问题!

0 投票
4 回答
5410 浏览

asp.net - 跨应用程序的 ASP.NET MemoryCache 共享

我一直在阅读有关从 .Net Framework 4.0 开始的新 MemoryCache 类的信息。根据我的阅读,您可以跨不同的 .Net 应用程序访问 MemoryCache。我正在尝试在 Asp.Net 应用程序和标准 Windows 窗体 .Net 应用程序之间共享一个对象。如果我将对象添加到 .Net 应用程序中的 MemoryCache,Asp.Net 应用程序看不到它。有没有办法做到这一点?感谢您的宝贵时间,非常感谢。

Windows 窗体应用程序:

ASP.NET 应用程序:

谢谢 - 瑞安

0 投票
1 回答
74 浏览

c# - System.Web.Caching 和 System.Runtime.Caching 组合的内存使用行为

我有一个遗留应用程序,相当大,它同时实现了 System.Web.Caching 和 System.Runtime.Caching。是的,没错,在同一个应用程序池中运行的服务可以使用其中任何一个。

我的问题是,就内存限制而言,这些将如何相互作用?根据我的阅读,MemoryCache 的默认限制是可用内存的 60%,这很棒。我想更直接的问题是 System.Web.Caching 实例是否共享相同的 60% ?

我还有一个 MemoryCache 的命名实例,限制为 100mb。

我想了解的是,如果或当 System.Web.Caching 被填满并强制弹出时,我的 MemoryCache 实例会发生什么?

0 投票
0 回答
20 浏览

asp.net - 一段时间后 Web 缓存消失

我有如下代码。当我第一次打开页面时,我从查询中获取数据,随后打开页面时,我从缓存中获取数据并且查询没有运行。但是当我稍后打开页面时,比如 2 小时后,我没有从缓存中获取数据,而是查询再次运行......如果绝对过期设置为 26 小时以上,为什么缓存之后不再可用2小时?我在这里想念什么?有一些全局参数来配置 IIS 或类似的最大缓存时间?

0 投票
0 回答
13 浏览

asp.net - Web 缓存在一段时间后丢失

我有如下代码。当我第一次打开页面时,我从查询中获取数据,随后打开页面时,我从缓存中获取数据并且查询没有运行。但是当我稍后打开页面时,我没有从缓存中获取数据,而是查询再次运行......已经将应用程序池配置为不回收并确认这没有发生寻找 w3wp.exe 进程开始时间。由于缓存数据不存在,这是否意味着应用程序域已回收?或者可能是另一个原因?如何识别应用程序域是否已回收以及原因是什么?