c# - ASP.NET 最干净的方法使跨应用程序的缓存无效

标签 c# asp.net asp.net-mvc caching

我有两个 ASP.NET 应用程序在同一台服务器上运行并共享同一数据库。一种是使用 MVC 开发的前端,它缓存数据以避免数据库调用来检索相同的对象。另一个是后端,使用WebForms开发,用于管理CRUD操作。

我想在后端操作发生时使前端缓存失效。我不需要改进的机制...后端只会偶尔使用,并且可能会使所有缓存的对象无效。

我遇到过一些解决方案,但它们都不是很干净的解决方案...例如,在数据库设置表上放置一个标志,使用共享配置文件,从后台调用前端 Web 服务 -结束申请。每次调用前端页面时都需要应用每个解决方案,因此我需要尽可能减少资源消耗。

我不想使用 memcached 或 AppFabric 或类似的,因为我认为它们对我的基本需求来说太过分了。

非常感谢!

最佳答案

您可以执行一个使缓存无效的操作。你可以传递一个 secret token 来检查请求是否来自你的其他网络应用程序以确保安全。

所以它看起来像这样:

public ActionResult Invalidate(string key)
{
    if (key == ConfigurationManager.AppSettings["ApplicationSecurityKey"])
    {
        _cacheService.Invalidate();
        return Content("ok");
    }
    return null;
}

在两个项目的 web.config 文件中,您将拥有:

<appSettings>
    <add key="ApplicationSecurityKey" value="SomeVerySecureValue" />
</appsettings>

您可以像这样从您的其他 Web 应用程序调用它:

WebClient client = new WebClient();               
client.QueryString.Add("key", ConfigurationManager.AppSettings["ApplicationSecurityKey"]);
string response = client.DownloadString(url)

关于c# - ASP.NET 最干净的方法使跨应用程序的缓存无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27941637/

相关文章:

javascript - ASP.NET 中的 CheckboxList 选中和取消选中

asp.net - Spark-View-Engine 与 ASP.NET MVC2

c# - 如何缓存数据库表以防止在 Asp.net C# mvc 中进行许多数据库查询

C# 无法将我的正则表达式识别为字符串,即使我已尝试转义所有内容

c# - 如何在 C++ 运行时组件内的 Windows Phone 8.1 XAML 应用程序中使用 C++ dll

c# - 查找数组中的重复值并将其全部输出

javascript - 谷歌地图在MVC项目中不显示

c# - 将没有属性的类标记为可序列化是没有意义的吗?

javascript - html 表格在打印后丢失了边框颜色和背景颜色

asp.net-mvc - 应用程序每15分钟编译一次