11 asp.net asp.net-mvc asp.net-core
在异步方法的vNext应用程序中使用以下内容的正确方法是什么:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
Run Code Online (Sandbox Code Playgroud)
我看到它是System.Web.Caching的一部分,但我唯一可以添加的地方是我的project.json文件的aspnet50 - > frameworkAssemblies部分,这是不正确的.
Muh*_*eed 27
像这样添加响应缓存中间件:
public void Configure(IApplicationBuilder application)
{
application
.UseResponseCaching()
.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)
此中间件根据您在响应中设置的缓存HTTP标头缓存内容.您可以查看其余答案以了解如何使用ResponseCache
.
请改用新ResponseCache
属性.ResponseCache
不是直接替代,OutputCache
因为它只使用Cache-Control HTTP标头控制客户端和代理缓存.
如果要使用服务器端缓存,请参阅此 StackOverflow问题,讨论如何使用IMemoryCache
或IDistributedCache
.
// Add this to your controller action.
[ResponseCache(Duration = 3600)]
Run Code Online (Sandbox Code Playgroud)
以下是使用新缓存配置文件的示例:
// Add this to your controller action.
[ResponseCache(CacheProfile="Cache1Hour")]
// Add this in Startup.cs
services.AddMvc(options =>
{
options.CacheProfiles.Add(
new CacheProfile()
{
Name = "Cache1Hour",
Duration = 3600,
VaryByHeader = "Accept"
});
});
Run Code Online (Sandbox Code Playgroud)
响应缓存中间件在各种情况下停止工作,您可以在文档中了解更多信息.您可能遇到的两个常见问题是,如果它看到一个Authorization
或Set-Cookie
HTTP标头,它就会停止工作.
在ASP.NET 4.6中,我们可以在web.config中表示缓存配置文件,并在不重新编译代码的情况下更改设置.有关如何将缓存配置文件移动到新配置文件的更多信息appsettings.json
,而不是在Startup.cs中对其进行硬编码,请参阅此问题.
更新
由于AndersNS有点指出,它最有可能在RC1中提供:https://github.com/aspnet/Mvc/issues/536.
简而言之OutputCache
,ASP.NET 5
目前没有或等同.
但请注意,这OutputCache
只是一个与缓存提供程序通信的逻辑最小的属性.例如attribute
,您可以轻松实现自己的此类功能Memory Cache
.或者您可以使用第三方解决方案.
我相信,什么时候ASP.NET 5
发货,市场上会有很多解决方案.而且我很确定我们也会有正式的OutputCache
等价物.
以下是MemoryCache
有人发现它有用的基本用法
MemoryCache cache = MemoryCache.Default;
string cacheName = "MyCache";
if (cache.Contains(cacheName) == false || cache[cacheName] == null)
{
var data = ... get data
cache.Set(cacheName, data, new CacheItemPolicy() { SlidingExpiration = DateTime.Now.AddDays(1).TimeOfDay });
}
return cache[cacheName];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7814 次 |
最近记录: |