gpt4 book ai didi

c# - 如何使用具有可变持续时间值的 [OutputCache (Duration=2000)] 并重置服务器缓存

转载 作者:太空狗 更新时间:2023-10-29 22:35:55 24 4
gpt4 key购买 nike

我有下面的代码,并希望 [OutputCache(Duration = 10)] 行中的 Duration 具有一个变量值,以便我可以从 中读取它DB 或来自 List 集合。

并且我希望能够在 Duration 更改时立即重置服务器缓存。

如何使 Duration 变化并在 Duration 更改时重置缓存的 HTML 数据?这是我的代码。

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();
}
}
}

最佳答案

要更改持续时间,请执行以下操作:

How to use dynamic duration value in Output Caching? (请注明原作者)

I would inherit from the OutputCache attribute and set the 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 来源:Caching Architecture Guide for .NET Framework Applications

注意:在 .Net 3.5 中,您只能使用 InProc 缓存,在 .NET 4 中,您可以将缓存存储在进程之外,也可以使用自定义 CacheProviders .

我想强调这一点,如果缓存的持续时间应该比 AppPool 回收的时间更长(例如每天),那么您需要缓存进程外。


同时检查它是否被缓存在服务器上: http://msdn.microsoft.com/en-us/library/system.web.ui.outputcachelocation.aspx

关于c# - 如何使用具有可变持续时间值的 [OutputCache (Duration=2000)] 并重置服务器缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45497347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com