如何使用 ASP.NET 5 和 MVC 6 缓存静态内容?
How to cache static content using ASP.NET 5 and MVC 6?
之前是通过在web.config文件中添加一些配置实现的,现在这个文件要灭掉
我期待在中间件声明中找到一些方法或属性,但我没有找到:
app.UseStaticFiles();
那么,现在将静态内容缓存为图像、脚本等的过程是什么?
是否有其他中间件可以执行此操作,或者此功能是否尚未在 MVC 6 中实现?
我正在寻找一种方法来将 cache-control、过期等 headers 添加到静态内容。
你的标题说的是压缩,但你的问题body说的是缓存。我假设你的意思是两者。
css/javascript 的缩小已在发布时由 grunt 任务运行器处理。在这之外的缓存和压缩似乎是网络服务器更适合的东西,而不是应用程序层,所以这里有一个很棒的 article 详细介绍了 nginx 的配置以管理 kestrel 的缓存和压缩。
如果你使用的是IIS,你可以直接在上面配置缓存和压缩,这里有一个tutorial。考虑到以前版本的 MVC 在 web.config\system.Webserver
中配置了此功能,它基本上设置了 IIS 配置值,您可能仍然可以使用 web.config 来配置 IIS(仅)。
都是关于 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
{
...
之前是通过在web.config文件中添加一些配置实现的,现在这个文件要灭掉
我期待在中间件声明中找到一些方法或属性,但我没有找到:
app.UseStaticFiles();
那么,现在将静态内容缓存为图像、脚本等的过程是什么?
是否有其他中间件可以执行此操作,或者此功能是否尚未在 MVC 6 中实现?
我正在寻找一种方法来将 cache-control、过期等 headers 添加到静态内容。
你的标题说的是压缩,但你的问题body说的是缓存。我假设你的意思是两者。
css/javascript 的缩小已在发布时由 grunt 任务运行器处理。在这之外的缓存和压缩似乎是网络服务器更适合的东西,而不是应用程序层,所以这里有一个很棒的 article 详细介绍了 nginx 的配置以管理 kestrel 的缓存和压缩。
如果你使用的是IIS,你可以直接在上面配置缓存和压缩,这里有一个tutorial。考虑到以前版本的 MVC 在 web.config\system.Webserver
中配置了此功能,它基本上设置了 IIS 配置值,您可能仍然可以使用 web.config 来配置 IIS(仅)。
都是关于 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
{
...