首頁 > 後端開發 > C++ > 如何使用屬性防止在特定 ASP.NET MVC 操作中進行快取?

如何使用屬性防止在特定 ASP.NET MVC 操作中進行快取?

Barbara Streisand
發布: 2025-01-14 15:22:44
原創
550 人瀏覽過

How Can I Prevent Caching in Specific ASP.NET MVC Actions Using Attributes?

避免在具有自訂屬性的 ASP.NET MVC 操作中進行快取

在 ASP.NET MVC 中,選擇性地停用特定操作的快取對於確保資料準確性至關重要,尤其是在處理動態或敏感資訊時。 本文示範如何建立和利用自訂屬性來實現此目的。

快取控制的自訂屬性

為了防止基於每個操作進行緩存,我們可以建立一個自訂屬性來覆寫預設的快取行為。下面是一個實際的例子:

<code class="language-csharp">[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        // Aggressively disable caching at multiple levels
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
        filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();

        base.OnResultExecuting(filterContext);
    }
}</code>
登入後複製

實作 NoCache 屬性

將此 NoCache 屬性套用至操作方法可有效停用該特定操作的快取。 例如:

<code class="language-csharp">[NoCache]
public ActionResult GetRealTimeData()
{
    // Action implementation...
}</code>
登入後複製

控制器級或應用程式範圍的快取預防

NoCache 屬性也可以套用於控制器級別,以停用該控制器內所有操作的快取:

<code class="language-csharp">[NoCache]
public class MyDataController : Controller
{
    public ActionResult GetData()
    {
        // Action implementation...
    }
}</code>
登入後複製

補充客戶端方法

雖然伺服器端屬性至關重要,但透過客戶端措施加強這一點可以提高快取預防的有效性。 在 jQuery 中,可以如下完成:

<code class="language-javascript">$.ajax({
    cache: false,
    // Other AJAX settings...
});</code>
登入後複製

透過結合伺服器端屬性和用戶端配置,您可以確保 ASP.NET MVC 應用程式中強大的快取防護,從而保證向使用者交付新鮮且準確的資料。

以上是如何使用屬性防止在特定 ASP.NET MVC 操作中進行快取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板