ASP.NET在应用程序中使缓存无效的最简洁方法

时间:2015-01-14 11:17:08

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

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

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

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

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

非常感谢!

1 个答案:

答案 0 :(得分:3)

您可以执行一项使缓存无效的操作。您可以向其传递一个秘密令牌,以检查该请求是否来自您的其他Web应用程序以确保安全性。

所以它看起来像这样:

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>

你可以从你的其他网络应用程序中调用它:

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