避免在具有自訂屬性的 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中文網其他相關文章!