问题标签 [data-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.
sql-server-2008-r2 - 从 CLR 触发器中提交 WebRequest
我刚刚实现了一个原型解决方案,通过将 CLR 触发器分配给表来实时更新我的缓存服务器,这样每当更新某个列时,从触发器调用的 URL 都会使用正确的数据更新缓存服务器。
它工作正常,代码如下:
}
关于性能、死锁、sql 崩溃或其他可能引起关注的领域,我想对这种方法的“缺点”有一些专家/经验丰富的看法。
有没有人尝试过这个(我相信很多人必须有),结果如何?一个成功的实现,还是您恢复到其他方法或实时更新缓存?
asp.net - asp.net 中的数据缓存安全问题
良好的缓存是加速访问公共数据(网站的所有用户)和经常使用的数据的完美方式。但是那些应该由特定角色(例如管理员)访问的数据呢?
这种缓存安全吗?使用数据缓存时是否需要执行任何与安全相关的操作?
c# - System.Web.Caching.Cache 在模型中引发空异常
也许这个问题应该很容易,但事实并非如此。我已经阅读了在 ASP.NET 中使用 System.Web.Caching.Cache 类的问题。
我有一个单例类:
如果在我的代码中的其他任何地方,我调用以下命令:
为什么第二行会抛出空引用异常?
也许我在代码的某个地方犯了一些错误?
谢谢你。
asp.net-mvc - Asp.Net Mvc 和 SqlServer 的最佳数据缓存策略
用户主要可以对 Web 应用程序进行 CRUD 操作。但是对于我的特定 Web 应用程序,情况有所不同。用户从不做 CUD。他们只能检索数据。
于是上图:
1-有一个服务更新数据库频繁(每秒7-8次更新)(调度框架是Quartz.Net)
2- Sql Server 2008 R2
3- Asp.Net MVC 4(网络用户只能从 Sql Server 读取数据!)
要求:Web 用户永远不会从 Sql Server 获取数据!
策略A:(代号:主机为Web App)
1- 从 Asp.Net MVC 调用服务库,所以我们可以更新数据库和缓存事务
2- Web 用户可以从缓存中读取
3- 在 App_Start 上,我们从 sql server 更新缓存数据。
4- 基于时间的应用程序池回收已关闭
策略B:(代号:Web Pipe)
1- 服务作为 exe 运行。
2- 服务不进行 Sql 更新,它向 Asp.Net MVC 应用程序发送 Web 请求。
3- 所以 Asp.Net MVC 应用程序(控制器的操作)确实更新和缓存事务
4- 在 App_Start 上,我们从 sql server 更新缓存数据。
5- 基于时间的应用程序池回收已关闭
对于这两个场景,Web 用户永远不会从 SqlServer 获取数据。他们总是从缓存中读取数据。他们总是使用对象缓存。Asp.Net Mvc 的最快缓存。没有序列化开销。
c# - 使用外部进程(即不通过页面的代码隐藏)缓存对象的任何方式?
我已经获得了我的 ASP.NET Web 应用程序所需的第一批真正海量的数据。到现在为止(实际上是两年!)还没有出现如此昂贵的东西,以至于我不能只在 Page_Load 上执行它或将它存储在 ViewState 或 Session 中。但是现在,我需要一个保持相当静态的对象列表(最多每天更新一次)并包含大约 5000 个对象,并且每次在 Page_Load 上构建它都会导致加载时间受到明显影响。
一些关于缓存的谷歌搜索显示了一些非常基本的例子,使用类似的东西Cache["myStuff"] = myObject;
,这一切都很好。但我想知道是否有某种方法可以将我的 Web 应用程序设置为在特定时间运行更新,而不管应用程序是否正在被访问或正在使用。
例如,我希望此过程更新列表,使其每天在凌晨 4:00 运行一次,此时没有人使用任何东西。因此,假设在第 1 天下午,Page_Load 检查以获取缓存的对象,但它返回 null,所以在这种情况下,硬着头皮请求/构建第 1 天剩余时间的列表,将其存储在缓存中. 在第 1 天剩下的时间里,没有人必须构建对象,因为它在缓存中并且仍然有效。
第 1 天结束,现在是第 2 天凌晨 4:00。没有人使用任何页面。我希望从第一天起存储在缓存中的对象被删除并重新构建,这样当人们早上到达办公室时,第一个访问该页面的人不需要构建今天的列表,已经完成了。
我唯一的想法是研究创建一个在 Windows 计划任务或其他东西上运行的控制台应用程序。但即便如此,我也不确定如何从这样的外部应用程序与 ASP.NET Web 应用程序进行交互。
希望我说得通。我想要完成的事情甚至可能吗?
caching - 使用户控件或页面缓存根据缓存字典的内容而变化
昨天,我花了一些时间考虑缓存。
具体来说,缓存数据。
我正在使用 ASP.NET 4.0,在 VB 中编码。我使用的是 MySQL 数据库,因此不能使用仅限 SQL Server 的 sqlDependency。
对我来说重要的是,所有数据更改都会被执行并且没有用户看到旧数据,因此我必须想出一些东西来监视特定表上的数据库更改。
我想出的是这个......
1:在缓存中创建键/值字典的例程,其中包含最近写入的任何表名和写入时间时间戳,即:
2:写入任何数据时调用的常用函数,即所有 INSERT、UPDATE 或 DELETE 命令都是通过向该函数传递两个参数来创建的,sql
并且tableChanges
。
在这个函数中,sql
只是 UPDATE/INSERT 代码,并且tableChanges
是一个逗号分隔的表名列表,这些表名将受此命令影响。
第 1 点中的表格是在任何修改期间创建的。
3:一个常用的getData
函数,它接受参数:
4:基于与上述类似的参数将数据对象写入缓存的函数。
现在,函数#3 首先检查缓存是否包含传递给它的键,如果没有,那么它就简单地转到数据库并获取新数据。
如果它确实包含这个键,那么它会做两件事,首先它获取添加这个项目的时间戳,它总是cacheKey_added
(在添加缓存项目的过程中创建),然后得到这个时间戳,它抓取逗号分隔tableDependencies
,将其转换为表名列表,循环遍历它们,从Dictionary
第一个函数中创建的缓存数据中检查相应的表更新时间(使用表名作为键)。
如果任何表更新时间比缓存时间更近,则它会转到数据库并获取新数据,如果不是,则返回缓存数据。
类似地,如果缓存中没有保存任何Dictionary
表,它会返回缓存数据,因为假设没有进行任何更改,因为此缓存对象仅在对数据库进行更改时创建。
数据总是保持在一个滑动的缓存时间上,通常很短,当然完全不需要缓存的数据可以直接抓取,不需要这个过程。
我没有发布上述任何内容的代码,因为它不一定与我的实际问题相关,但背景很重要。
所以,我的实际问题是:
鉴于上述方法可以很好地确定我的数据库中的任何表何时发生更改(假设 phpMyAdmin 中没有任何更改,但由于只有一个人可以访问它,在我的情况下这很好......我如何应用相同的原则缓存用户控件或页面?
因此,我过去曾使用 VaryByParam="PARA"
并 VaryByCustom="CUSTOM_VALUE"
成功缓存过用户控件。按理说这VaryByCustom
是要走的路……但是我如何可靠地将参数(表名和页面的最后缓存时间)传递给自定义函数来执行此操作……或者,我是在胡说八道吗?!
此外,有没有办法获得缓存写入时间而不必为每个缓存项保存额外的_added
键?
android - 在android中缓存大量数据
我有一些技术问题,对此没有太多了解。请指导我。从中央服务器获取数据后,我实际上必须在 android 中缓存大量数据(包括图像和文本)。数据将按顺序添加和删除,即一次只缓存/保存用户需要的数据。将被缓存的数据一次包含大约 80 张图像和相关文本(在最坏的情况下)。所以我想我应该在这里使用 sqlite db 来缓存它。就性能和空间而言,这是一个更好的选择吗?或者还有其他的
问候
没有其他人对此有任何想法,
asp.net - 如何在 ASP.NET 4 中删除目录后禁用应用程序重新启动?
在 asp.net 中删除目录后,应用程序将重新启动,我将丢失所有会话并且缓存将被清除。所以我找到了以下解决方案;我将以下代码放在Application_Start
禁用Global.asax
应用程序池回收中,但有时它不起作用。为什么?
c# - WinRT 从本地文件缓存读取有多昂贵
我正在构建一个 winrt Metro 应用程序,但似乎总是遇到这个(非?)问题。
我发现自己维护了很多可以来回序列化的缓存数据文件。从服务、用户选择的项目等中检索的数据。
我在编写调用时似乎总是遇到的问题是:是访问实际文件(和释放等)需要时间/成本高昂还是需要从中序列化的数据量?
我应该担心多少,例如,尝试将几个可能具有相同对象类型的文件合并到一个文件中,然后在我将对象“输出”后识别出我需要的文件。
c# - 如果像会话一样使用数据缓存,它会有更好的性能
我正在维护一个 asp.net 应用程序,在该应用程序中,我发现以前的开发人员已经将数据缓存实现为像会话一样,这意味着他们将数据存储在每个会话的缓存中,就像这样
在这个应用程序中有许多屏幕,用户可以在临时网格中添加多行(数据),这些临时网格实际上仅存储在该特定当前用户的缓存中,最后按下保存按钮将数据保存在数据库中。
我的问题是缓存是否像会话一样使用!它会带来任何性能改进吗?实际上我可以在我的开发中更改它。环境来检查性能,但我们不能在我们的环境中创建像 prod 这样的负载,而且在没有任何保证的情况下,我不能在生产中更改和部署代码。
请建议我
- 缓存的实现方式是否良好?
- 它像会话一样使用它会比会话有更好的性能吗?