簡體   English   中英

如何使用具有可變持續時間值的[OutputCache(Duration = 2000)]並重置服務器緩存

[英]How can I use [OutputCache (Duration=2000)] with variable duration value and reset Server cache

我有下面的代碼,並且希望Duration[OutputCache(Duration = 10)]線為具有可變值,這樣我可以從閱讀DB或從List集合。

我希望能夠在Duration發生變化時立即重置服務器緩存。

怎樣才能讓Duration多樣和重置緩存HTML當數據Duration被改變? 這是我的代碼。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Cache_Example.Controllers
{
    public class HomeController : Controller
    {

        // GET: Home
       // [OutputCache(Duration = 10)]
        public ActionResult Index()
        {
            return View();
        }

        [OutputCache(Duration = 10)]
        public ActionResult ShowDate()
        {
            return PartialView();
        }
    }
}

要更改持續時間,請按照以下步

如何在輸出緩存中使用動態持續時間值? (請信用原作者)

我將繼承OutputCache屬性並在那里設置Duration

public static class CacheConfig
{
    public static int Duration = 36600;
}

public class MyOutputCacheAttribute : OutputCacheAttribute
{
    public MyOutputCacheAttribute()
    {
        this.Duration = CacheConfig.Duration;
    }
}

[MyOutputCache(VaryByParam = "none")]
public ActionResult Index()
{
    return View();
}

然后,您可以通過CacheConfig.Duration動態地和全局地更改Duration

如果需要,您仍然可以覆蓋每個操作的全局設置:

[MyOutputCache(Duration = 100, VaryByParam = "none")]
public ActionResult OtherAction()
{
    return View();
}

然后,當Duration自己更改時,您可以立即重置服務器緩存。 這是如何做:

“ASP.NET緩存對象位於System.Web命名空間中,並且因為它是通用緩存實現,所以它可以在任何引用此命名空間的應用程序中使用。

System.Web.Caching.Cache類是對象的緩存。 可以通過靜態屬性System.Web.HttpRuntime.Cache或通過輔助實例屬性System.Web.UI.Page和System.Web.HttpContext.Cache訪問它。 因此,它可以在請求的上下文之外使用。 整個應用程序域中只有一個此對象的實例,因此HttpRuntime.Cache對象可以存在於Aspnet_wp.exe之外的每個應用程序域中。

以下代碼顯示了如何從通用應用程序訪問ASP.NET緩存對象。

HttpRuntime httpRT = new HttpRuntime();
Cache cache = HttpRuntime.Cache;

在訪問當前請求的緩存對象后,您可以按常規方式使用其成員。“

REF:過時的MSDN源: .NET Framework應用程序的緩存體系結構指南

注意:使用.Net 3.5,您只能使用InProc緩存,使用.NET 4,您可以在進程外部存儲緩存以及使用自定義CacheProviders

我想強調一點,如果緩存應該比AppPool循環使用的時間更長(例如每天),那么你需要緩存Out-Of-Process。


還要檢查它是否在服務器上緩存: http//msdn.microsoft.com/en-us/library/system.web.ui.outputcachelocation.aspx

暫無
暫無

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

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