首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ClientCache内核中启用ASP.NET

如何在ClientCache内核中启用ASP.NET
EN

Stack Overflow用户
提问于 2015-08-21 10:40:45
回答 3查看 5.1K关注 0票数 9

在ASP.net 4.5中,我们过去可以通过在web.config中添加“ClientCache”来启用静态资源上的过期标头(切换,启用浏览器缓存),如下所示:

代码语言:javascript
复制
<staticcontent>
  <clientcache cachecontrolmode="UseMaxAge" cachecontrolmaxage="365.00:00:00" />
</staticcontent>

http://madskristensen.net/post/cache-busting-in-aspnet中所引用的

在ASP.net 5中,当我们没有web.config和Startup.cs时,我们如何做到这一点呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-02 07:14:57

在Startup.cs >配置中(IApplicationBuilder applicationBuilder,.)

代码语言:javascript
复制
applicationBuilder.UseStaticFiles(new StaticFileOptions
{
     OnPrepareResponse = context => 
     context.Context.Response.Headers.Add("Cache-Control", "public, max-age=2592000")
});
票数 14
EN

Stack Overflow用户

发布于 2015-08-21 17:01:58

如果您正在使用MVC,您可以在操作中使用ResponseCacheAttribute来设置客户端缓存头。还有一个可以使用的ResponseCacheFilter

票数 1
EN

Stack Overflow用户

发布于 2015-09-01 18:58:55

你用哪台服务器?

  • 如果使用IIS,仍然可以在www.root文件夹中使用web.config。
  • 如果你使用红隼,还没有内置的解决方案。但是,您可以编写一个中间件来添加特定的缓存控制报头。或者使用nginx作为反向代理。

中间件:

未测试(!)就在我的头上,,你可以写这样的东西:

代码语言:javascript
复制
public sealed class CacheControlMiddleWare
{
    readonly RequestDelegate _next;
    public CacheControlMiddleWare(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        if (context.Request.Path.Value.EndsWith(".jpg")
        {
            context.Response.Headers.Add("Cache-Control", new[]{"max-age=100"});
        }
        await _next(context);
    }
}

nginx作为反向代理:

http://mjomaa.com/computer-science/frameworks/asp-net-mvc/141-how-to-combine-nginx-kestrel-for-production-part-i-installation

除此之外,我还为响应缓存编写了一些说明:

http://mjomaa.com/computer-science/frameworks/asp-net-mvc/153-output-response-caching-in-asp-net-5

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32138286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档