如何使用ASP.NET 5和MVC 6缓存静态内容?

时间:2015-11-20 08:58:25

标签: asp.net-core asp.net-core-mvc

这是以前通过向web.config文件添加一些配置来实现的,但现在这个文件将要消失。

我期待在中间件声明中找到一些方法或属性,但我还没找到:

app.UseStaticFiles();

那么,现在将静态内容缓存为图像,脚本等的过程呢?

是否有其他中间件可以执行此操作,或者此功能是否尚未在MVC 6中实现?

我正在寻找一种方法来将缓存控制,过期等标题添加到静态内容中。

2 个答案:

答案 0 :(得分:3)

所有关于使用AspNet Core的中间件;

将以下内容添加到Startup.cs文件中的Configure方法

app.Use(async (context, next) =>
            {
                context.Response.Headers.Add("Content-encoding", "gzip");
                context.Response.Body = new System.IO.Compression.GZipStream(context.Response.Body,
                    System.IO.Compression.CompressionMode.Compress);
                await next();
                await context.Response.Body.FlushAsync();
            });

顺便说一下,你可以将它添加到ConfigureServices方法

services.AddMvc(options =>
            {
                options.CacheProfiles.Add("Default",
                    new CacheProfile()
                    {
                        Duration = 60
                    });
                options.CacheProfiles.Add("Never",
                    new CacheProfile()
                    {
                        Location = ResponseCacheLocation.None,
                        NoStore = true
                    });
            });

装饰控件
[ResponseCache(CacheProfileName = "Default")]
    public class HomeController : Controller
    {
...

答案 1 :(得分:0)

你的标题是压缩,但你的问题正在说缓存。我猜你的意思都是。

css / javascript的缩小已经由发布的grunt任务运行器处理。在这之外的缓存和压缩看起来像是Web服务器更适合的东西,而不是应用程序层,所以这里有一个很棒的article,它详细说明了nginx的配置,以便为kestrel管理缓存和压缩。

如果您使用的是IIS,则可以直接在其上配置缓存和压缩,这里是tutorial。考虑到先前版本的MVC在web.config\system.Webserver中配置了此功能,基本上设置了IIS配置值,您仍然可以使用web.config来配置IIS(仅限)。