2015-11-20 79 views
3

这是以前通过在web.config文件中添加一些配置来实现的,但是现在这个文件将被消除。如何使用ASP.NET 5和MVC 6缓存静态内容?

我希望找到的中间件声明一些方法或属性,但我还没有发现:

app.UseStaticFiles(); 

所以,这是现在的程序缓存的静态内容,图片,脚本等。 ?

是否有另一个中间件可以做到这一点,或者这个特性还没有在MVC 6中实现?

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

+0

请仔细阅读以下问题:如何缓存静态内容......如果您正在作为管理员进行修改,在将问题标记为伪装之前,你会阅读所有其他答案和评论。 – Vi100

回答

3

这是关于使用AspNet Core的中间件;

以下添加到在Startup.cs你的配置方法文件

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 
    { 
... 
+0

默认使用“默认”配置文件吗? 如何设置默认配置文件? – hex

0

你的标题说压缩,但你的问题身体说缓存。我会假设你的意思是两者。

css/javascript的缩小已经由发布时的grunt任务运行者处理。除此之外的缓存和压缩看起来像一个web服务器更适合,而不是应用程序层,所以这里有一个伟大的article详细说明了nginx的配置来管理kestrel的缓存和压缩。

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

+0

感谢您的提示,我已经纠正了这个问题,我的意思是缓存。我已经在使用grunt进行缩小,所以我在寻找的是将缓存控制,expires等标题添加到静态内容的方法。我认为这应该是一个框架的功能,至少现在应用程序是从服务器上以独立的方式销售的。当然,我使用Kestrel是因为它是强加的方式,并且我知道如何以传统方式配置IIS,但我不想再考虑每个Web服务器的特性,当然我也不会开始现在学习nginx。 – Vi100

+0

哎呀,我的意思是咕噜:)你见过[this](http://stackoverflow.com/q/29256244/469777)? –

+0

嗯。你连接的问题是8个月和4个测试版本。我们对此还有同样的观点吗?我无法相信。答案中的workarrounds是可怕的... ASP.NET 5现在在Release Candidate上,具有封闭的功能,我希望他们已经实现了任何优雅的方式来设置这个标头并覆盖服务器配置,这些都是关于ASP.NET的,或者我错过了一些东西。 – Vi100

相关问题