是否可以gzip自动包含的脚本?

时间:2012-03-07 03:34:27

标签: c# asp.net gzip

我正在尝试为ASP.NET Web应用程序执行性能优化。目前我已经gzip主要的aspx页面(使用How to implement GZip compression in ASP.NET?中的技术),并合并并gzip手动包含的javascript文件(使用http://atashbahar.com/post/Combine-minify-compress-JavaScript-files-to-load-ASPNET-pages-faster.aspx)。

但是我注意到有2个相当大的脚本我认为是由框架自动下载的。一个似乎是处理回发(21kb),另一个用于处理asp:我有的菜单(32kb)。在萤火虫中,它们显示为http://localhost:51061/WebResource.axd?d=v_Vv17tAURCE6646oHs1gmtwuRnH_kz1noYhRYi4pZJ3gy5A9YfvH6xvbJzjQds1dcPcTJ5q0OMwnGYfryCxn0MPoOgKTchA4WCQfDaV-F01&t=634619019774587441或类似的东西。

有没有办法gzip这些文件,或者更好的是,还将它与我的其他javascript文件合并?我无法更改ISS设置,这似乎是其他一些主题的建议。

更新

抱歉,内容类型和内容编码之间有点混淆。 无论如何,你的更新不告诉我该怎么做才能解决它?无论如何,这是成功编码的javascript文件的标题:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Fri, 09 Mar 2012 01:34:19 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 12552
Content-Encoding: gzip
Cache-Control: public, max-age=2592000
Expires: Sun, 08 Apr 2012 01:34:19 GMT
Content-Type: application/x-javascript
Connection: Close

这是未编码的系统javascript的标题:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Fri, 09 Mar 2012 01:34:19 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Expires: Sat, 09 Mar 2013 01:34:19 GMT
Last-Modified: Wed, 11 Jan 2012 10:06:17 GMT
Content-Type: application/x-javascript
Content-Length: 21823
Connection: Close

在请求标头中,两者都有Accept-Encoding: gzip, deflate

1 个答案:

答案 0 :(得分:1)

在system.web.extensions / scripting中添加scriptResourceHandler设置,将enableCompression设置为true

<configuration>
  ...
  <system.web.extensions>
    <scripting>
      <scriptResourceHandler enableCompression="true" enableCaching="true"/>
    </scripting>
  </system.web.extensions>
  ...
</configuration>

你可以摆脱自定义gziping,最好让iis这样做,设置urlCompression

<configuration>
    ...
    <system.webServer>
        <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true"/>
    ...
    </system.webServer>
  ...
  </configuration>

更新: 内容类型不应该更改,它是相同的内容只是gzip,在浏览器请求中应该有标题:

Accept-Encoding: gzip, deflate

并在回复中:

Content-Encoding: gzip

只是注意,ISA Proxy服务器默认从Accept-Encoding请求头中剥离gzip,因此ISA可以扫描内容中的恶意数据,也许其他一些代理/防火墙软件会做同样的事情。