问题标签 [httpruntime.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.
c# - 我应该使用 HttpRuntime.Cache 吗?
我是 asp.net 的初学者,并且有一些关于缓存的问题:
- HttpRuntime.Cache 只提供了几个方法,我想我可以自己用 Dictionary 实现这些方法。
- 如果 HttpRuntime.Cache 比 Dictionary 好得多,为什么有些人想实现自己的缓存框架。
- MS企业缓存块怎么样?
c# - Null 作为 HttpRuntime.Cache.Add 中的值
我想为某些键存储空值,HttpRuntime.Cache
因为我不想再次去数据库发现该键没有条目。
所以第一次,它进入数据库并填充缓存。目的是使用缓存数据而不是进行数据库调用来服务以下调用。
这是我正在使用的代码:
最后一行代码,即 HttpRuntime.Cache.Add 抛出 System.ArgumentNullException: Value cannot be null。
知道这是否可能,或者我需要使用其他数据结构来存储空值并稍后查找?
c# - c#:HttpRuntime.Cache 产生无效的强制转换异常
以下如何产生“无效的强制转换异常”???
(对于那些问我为什么要这样做的人:我在缓存中/从缓存中随机添加和删除一些不同的对象,因此需要进行这种测试。我计划创建某种容器对象来保存我的各种对象;我只会将这个对象推送到缓存中,但问题仍然存在:它会解决强制转换异常吗?)
asp.net - ASP.NET (MVC3) - HttpRuntime.Cache - 键间歇性存在
我有一个非常奇怪的问题,我完全感到困惑。
我有一段代码可以解析一些数据并使用 Insert 方法将结果存储在我们的网络服务器的 HttpRuntime.Cache 中。这将存储 10 秒。似乎有一些问题,所以我创建了一个测试页面,它从缓存中检索一个简单的对象并显示它是否为空。要将对象添加到缓存中,我使用:
HttpRuntime.Cache.Insert(CHECK_KEY, new object(), null, DateTime.Now.AddSeconds(10), System.Web.Caching.Cache.NoSlidingExpiration);
在测试页面中,我尝试检索对象:
var isInCache = this.cacheService.Get<object>(CHECK_KEY) != null;
cacheService 的方法是:
现在奇怪的部分。如果我调用一个调用“Insert”方法的 URL,并转到我的测试页面来检索它,那么大约 99% 的时间isInCache
是的值。false
有时它在整个 10 秒内都能正常工作(例如,我每秒刷新我的测试页面,我得到true
10 次)但同样,大部分时间它只是返回false
。现在,当我按住 F5 时,有时我会在输出中看到true
,眨眼间,这意味着可以找到密钥!这不是一些浏览器缓存,因为它只会true
在 10 秒的缓存持续时间内间歇性闪烁,之后它只会显示 false(这是合乎逻辑的,因为密钥已过期)。所以我的问题是:
- 为什么大多数时候从缓存中检索一个简单的对象会失败?
- 缓存中的其他项目(在同一测试页面上)确实会被检索到,而不是那个对象。
更糟糕的是,这(当然!)在我的本地机器上完美运行,在测试机器上,而不是生产。我很无知。请帮忙 :-)
编辑: 好的,所以我现在在两种不同的浏览器中进行测试,IE9 和 Chrome ......并且 IE9 正确显示了 HttpRuntime.Cache 中的项目,但 Chrome 不是。它总是显示 false 并且没有其他缓存数据,除非按住 F5 时偶尔会显示它。从什么时候开始依赖 HttpRuntime.Cache 浏览器???额外编辑:IE9 不再显示缓存数据。因此,虽然它可能因浏览器而异,但这并不是说 IE 总是可以工作,而 chrome 不能……它不同。
EDIT2: 所以我使用 ViewData 将变量传递给我的视图:
Machinename 来自 Server.MachineName,isInCache 是对象,变量 A 不是来自 HttpRuntime.Cache,变量 B 是,它也间歇性地不存在。
c# - 全局缓存对象不断添加项目
我注意到在我的 ASP.NET Web 应用程序中,内部全局缓存对象不断添加以下项目:System.Web.Script.Services.WebServiceData:/mypages/default.aspx。请注意,我确实有一个包含 default.aspx 的文件夹“mypages”。为什么这个页面在我访问它的那一刻就被添加到 ASP.NET 缓存中?在详细调试时,我注意到缓存中添加了更多页面。为什么 ASP.NET 在缓存中添加我的应用页面链接?
c# - 从其他线程访问 HttpRuntime.Cache
我有一个线程在我的 ASP.Net 后面运行。在这个线程中,我将数据放入缓存中,如下所示:
在另一个线程(网页)上,我首先检查缓存是否包含任何数据,然后尝试从缓存中获取对象,如下所示:
编辑:每次我尝试做var test = (string)HttpRuntime.Cache["test"];
缓存时都会变空(或者会删除对象,没有在缓存中测试多个对象)加上var test
也是空的。这当然是当 HttpRuntime.Cache.Count 大于 0 时
哦,它没有给出任何例外或任何东西
asp.net - 过期时多线程删除 HttpRuntime.Cache 项
即使我使用 lock 和静态 locker 对象来锁定我的代码同时访问同一个项目,我如何保证在我的 lock 期间 HttpRuntime 不会从另一个线程中删除该项目?我在 HttpRuntime 或 HttpRuntime.Cache 中看不到任何 SyncRoot 属性。
如果我指定过期回调并将我的静态储物柜对象锁定在该回调中,这样做是否合适?
在回调中锁定 HttpRuntime.Cache 过期线程是不是很糟糕?
asp.net - HttpRuntime.Cache 在客户端/服务器端进行缓存
我在 asp.net Web 应用程序的 global.asax 文件中声明的 HttpRuntime.Cache 是否在客户端或服务器端进行缓存?
还有我们可以为这段代码设置滑动过期的任何机会吗?
提前致谢。
编辑: 经过深思熟虑,我认为这将是可能的解决方案。
为整个 asp.net Web 应用程序放置一个 basePage 类,其中所有 system.web.ui.page 都将从该类继承。
和下面的代码
c# - 以只读方式读取 HttpRuntime.Cache 项
我正在使用 aHttpRuntime.Cache
来存储将在会话中频繁访问的对象列表。
我使用以下代码行从缓存中获取项目:
但是,不幸的是,当我更新_chartData时,它也会更新缓存的项目。
我怎样才能简单地获取缓存项目的副本?
asp.net-mvc-3 - c# asp.net MVC缓存
我正在使用 HttpRuntime.Cache 来存储我的站点缓存。问题是每当我想上传新的更新编译版本时,网站的缓存都会被删除。我很想知道克服这个问题的方法。提前感谢所有亲爱的助手。