问题标签 [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.

0 投票
0 回答
1377 浏览

sql-server-2008-r2 - 从 CLR 触发器中提交 WebRequest

我刚刚实现了一个原型解决方案,通过将 CLR 触发器分配给表来实时更新我的​​缓存服务器,这样每当更新某个列时,从触发器调用的 URL 都会使用正确的数据更新缓存服务器。

它工作正常,代码如下:

}

关于性能、死锁、sql 崩溃或其他可能引起关注的领域,我想对这种方法的“缺点”有一些专家/经验丰富的看法。

有没有人尝试过这个(我相信很多人必须有),结果如何?一个成功的实现,还是您恢复到其他方法或实时更新缓存?

0 投票
1 回答
544 浏览

asp.net - asp.net 中的数据缓存安全问题

良好的缓存是加速访问公共数据(网站的所有用户)和经常使用的数据的完美方式。但是那些应该由特定角色(例如管理员)访问的数据呢?

这种缓存安全吗?使用数据缓存时是否需要执行任何与安全相关的操作?

0 投票
2 回答
4635 浏览

c# - System.Web.Caching.Cache 在模型中引发空异常

也许这个问题应该很容易,但事实并非如此。我已经阅读了在 ASP.NET 中使用 System.Web.Caching.Cache 类的问题

我有一个单例类:

如果在我的代码中的其他任何地方,我调用以下命令:

为什么第二行会抛出空引用异常?

也许我在代码的某个地方犯了一些错误?

谢谢你。

0 投票
0 回答
989 浏览

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 的最快缓存。没有序列化开销。

0 投票
3 回答
498 浏览

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 应用程序进行交互。

希望我说得通。我想要完成的事情甚至可能吗?

0 投票
0 回答
90 浏览

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键?

0 投票
1 回答
496 浏览

android - 在android中缓存大量数据

我有一些技术问题,对此没有太多了解。请指导我。从中央服务器获取数据后,我实际上必须在 android 中缓存大量数据(包括图像和文本)。数据将按顺序添加和删除,即一​​次只缓存/保存用户需要的数据。将被缓存的数据一次包含大约 80 张图像和相关文本(在最坏的情况下)。所以我想我应该在这里使用 sqlite db 来缓存它。就性能和空间而言,这是一个更好的选择吗?或者还有其他的

问候

没有其他人对此有任何想法,

0 投票
1 回答
445 浏览

asp.net - 如何在 ASP.NET 4 中删除目录后禁用应用程序重新启动?

在 asp.net 中删除目录后,应用程序将重新启动,我将丢失所有会话并且缓存将被清除。所以我找到了以下解决方案;我将以下代码放在Application_Start禁用Global.asax应用程序池回收中,但有时它不起作用。为什么?

0 投票
1 回答
231 浏览

c# - WinRT 从本地文件缓存读取有多昂贵

我正在构建一个 winrt Metro 应用程序,但似乎总是遇到这个(非?)问题。

我发现自己维护了很多可以来回序列化的缓存数据文件。从服务、用户选择的项目等中检索的数据。

我在编写调用时似乎总是遇到的问题是:是访问实际文件(和释放等)需要时间/成本高昂还是需要从中序列化的数据量?

我应该担心多少,例如,尝试将几个可能具有相同对象类型的文件合并到一个文件中,然后在我将对象“输出”后识别出我需要的文件。

0 投票
1 回答
59 浏览

c# - 如果像会话一样使用数据缓存,它会有更好的性能

我正在维护一个 asp.net 应用程序,在该应用程序中,我发现以前的开发人员已经将数据缓存实现为像会话一样,这意味着他们将数据存储在每个会话的缓存中,就像这样

在这个应用程序中有许多屏幕,用户可以在临时网格中添加多行(数据),这些临时网格实际上仅存储在该特定当前用户的缓存中,最后按下保存按钮将数据保存在数据库中。

我的问题是缓存是否像会话一样使用!它会带来任何性能改进吗?实际上我可以在我的开发中更改它。环境来检查性能,但我们不能在我们的环境中创建像 prod 这样的负载,而且在没有任何保证的情况下,我不能在生产中更改和部署代码。

请建议我

  1. 缓存的实现方式是否良好?
  2. 它像会话一样使用它会比会话有更好的性能吗?