解决方法
还有另一种方式可以为gzip压缩文件提供替代步骤2和3.基本上是一样的想法,但是有一个nuget package可以让您随时可用。它基本上检查是否是与请求的.gz或.br文件匹配。如果存在,则返回相应的头文件。它验证该请求是否具有相应算法的头。如果要自己编译的Github代码是here。
还有一个问题要支持在repository的官方,所以我真的希望微软有标准的插件来做到这一点,因为现在使用它是相当普遍和合乎逻辑的。
我想我已经找到了最优化的服务压缩内容的方式。主要的想法是预压缩文件,由于默认的ASP.NET 5方式是使用gulp来构建js,这样做很简单:
gulp.task("buildApplication:js",function () { return gulp.src(...) ... .pipe(gzip()) ... });
这将在您的bundles文件夹中产生类似library.js.gz的内容
2.在cshtml文件中引用libraries.js.gz而不是libraries.js
我们需要添加content-encoding并将Content-Type从默认应用程序/ x-gzip更改为application / javascript,因为并不是所有的浏览器都足够聪明地从x-gzip中正确读取js
app.UseStaticFiles(new StaticFileOptions { OnPrepareResponse = context => { if (headers.ContentType.MediaType == "application/x-gzip") { if (context.File.Name.EndsWith("js.gz")) { headers.ContentType = new MediaTypeHeaderValue("application/javascript"); } else if (context.File.Name.EndsWith("css.gz")) { headers.ContentType = new MediaTypeHeaderValue("text/css"); } context.Context.Response.Headers.Add("content-encoding","gzip"); } } });
现在,所有这一切都没有cpu周期浪费在一起gzip同一个内容,这是提供文件的最佳性能。为了进一步改善,所有的js都必须在gzipping之前被bunlded和minized。另一个升级是将CacheControl max Age设置在同一个OnPrepareResponse中缓存一年,并在cshtml中添加asp-append-version =“true”。
原文地址:https://www.jb51.cc/netcore/253096.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。