一尘不染

如何在ASP.NET中实现GZip压缩?

c#

我正在尝试为我的asp.net页面(包括CSS和JS文件)实施GZip压缩。我尝试了以下代码,但它仅压缩我的.aspx页(从YSlow找到)

HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;

上面的代码仅压缩我的.aspx页面代码(标记),而不压缩作为外部文件包含的CSS和JS文件。请告诉我如何使用代码在ASP.NET中实现GZip压缩(因为我在共享宿主服务器上,而我无法访问IIS服务器配置)。而且在上面的代码中,我没有得到最后两行,为什么要使用它们以及这些行的目的是什么。请解释!


阅读 371

收藏
2020-05-19

共1个答案

一尘不染

对于压缩JS和CSS文件,您实际上必须在IIS级别进行处理,因为这些文件无需ASP.NET运行时即可直接呈现。

您可以在IIS中将JSX和CSSX扩展名映射到aspnet_isapi.dll,然后利用您的邮政编码,但是IIS可能会为您做得更好。

内容编码标头告诉浏览器在呈现之前需要解压缩内容。有些浏览器很聪明,可以根据内容的形状来解决这个问题,但是最好告诉它。

此处有“接受编码缓存”设置,因此不会将gzip压缩内容的缓存版本发送到仅请求text / html的浏览器。

2020-05-19