189 8069 5689

如何在ASP.NETCore中缓存静态资源-创新互联

本篇文章给大家分享的是有关如何在ASP.NET Core中缓存静态资源,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

成都创新互联主要从事网站设计、网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务台山,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

ASP.NET Core提供了一种使用 TagHelper来追加版本与查询字符串的机制。它支持以静态资源为目标的最常见的HTML标签:script,link和img。所有你需要做的是在对应Html标签中追加asp-append-version="true"




在浏览器中的展现:



每个文件都会有对应的V值,并存储在一个IMemoryCache


文件的URL现在是的,并且会在文件更改时更改,所以我们可以将缓存头添加到响应中,以指示客户端文件可以永久存储在缓存中


实践

为了指示浏览器将文件存储在缓存中,我们必须发送Cache-control头文件和Expires头文件以实现HTTP/1.0兼容性。为了添加这些头文件,我们使用了OnPrepareResponse回调函数StaticFilesOptions。我们来修改这个Startup.cs文件:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
 app.UseStaticFiles(new StaticFileOptions
 {
 OnPrepareResponse = context =>
 {
  //缓存一年
  if (!string.IsNullOrEmpty(context.Context.Request.Query["v"]))
  {
  context.Context.Response.Headers.Add("cache-control", new[] { "public,max-age=31536000" });
  context.Context.Response.Headers.Add("Expires", new[] { DateTime.UtcNow.AddYears(1).ToString("R") }); // Format RFC1123
  }
 }
 });

 app.UseMvc(routes =>
 {
 routes.MapRoute(
  name: "default",
  template: "{controller=Home}/{action=Index}/{id?}");
 });
}

 可以查看开发者控制台,发现静态资源都被缓存:

如何在ASP.NET Core中缓存静态资源

如果不想缓存某个静态文件,修改Startup.cs文件:

app.UseStaticFiles(new StaticFileOptions
   {
    OnPrepareResponse = context =>
    {
     //缓存一年
     //以下操作是UseStaticFiles内部默认实现
     if (!string.IsNullOrEmpty(context.Context.Request.Query["v"]))//资源添加asp-append-version="true"后v是查询参数
     {
      //context.Context.Response.Headers.Add("cache-control", new[] { "public,max-age=31536000" });
      context.Context.Response.Headers.Add("cache-control", new[] { "public,no-cache" });
      context.Context.Response.Headers.Add("Expires", new[] { DateTime.UtcNow.AddYears(1).ToString("R") }); // Format RFC1123
     }
    }
   });

会发现无论怎么刷新,site.js?v=7mkNbU1tgQL1bUeZe3j2R151hKLhLDKO4BBaR-iqCy0文件永远都是重新请求,并没有使用缓存机制

 如何在ASP.NET Core中缓存静态资源

结论

使用HTTP缓存对于性能方面的原因(客户端和服务器端)非常重要。使用ASP.NET Core,您可以利用提供的功能TagHelpers来生成版本控制的URL,并更改默认配置StaticFilesMiddleware为资源Urls添加header的Cache-control属性 。

如何在ASP.NET Core中缓存静态资源

以上就是如何在ASP.NET Core中缓存静态资源,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


网站名称:如何在ASP.NETCore中缓存静态资源-创新互联
转载注明:http://jkwzsj.com/article/podoc.html

其他资讯