簡體   English   中英

ASP.NET在應用程序中使緩存無效的最簡潔方法

[英]ASP.NET cleanest way to invalidate cache across applications

我有兩個ASP.NET應用程序在同一台服務器上運行並共享同一個數據庫。 一個是使用MVC開發的前端,它緩存數據以避免數據庫調用以檢索相同的對象。 另一個是使用WebForms開發的后端,用於管理CRUD操作。

我想在后端操作發生時使前端緩存無效。 我不需要一個改進的機制...后端只會偶爾使用,並可能使所有緩存的對象無效。

我遇到過一些解決方案,但它們並不是非常干凈的解決方案......比如,在db設置表上放置一個標志,使用共享配置文件,從后端應用程序調用前端Web服務。 每次調用前端頁面時都需要應用每個解決方案,因此我需要盡可能減少資源消耗。

我不想使用memcached或AppFabric或類似的'因為我認為他們對我的基本需求有點過分。

非常感謝你!

您可以執行一個使緩存無效的操作。 您可以向其傳遞一個秘密令牌,以檢查該請求是否來自您的其他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>

您可以從其他Web應用程序中調用它,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM