我正在查看IIS服务器中的ApplicationHost.config文件,以了解Http压缩的配置。
我看到以下代码:
<httpCompression
directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
(摘自https://docs.microsoft.com/en-us/iis/configuration/system.webserver/httpcompression/)
我想问的是:
在动态和静态类型中具有相同的mimeType是什么意思?
例如,从我提供的代码中,我们在两节中均看到application/javascript
。现在可以说启用了动态和静态内容压缩,当我们为Content-Type application/javascript
提供Http响应时会发生什么?
答案 0 :(得分:1)
IIS提供的内容是静态的还是动态的。在大多数情况下,如果您的内容是由诸如ASP.NET或Classic ASP之类的处理程序提供的,则它属于动态存储桶,如果它是直接从磁盘读取的文件,则它是静态的。您提供的示例显然无关紧要,因为如果提供了application / javascript并同时启用了它们,则可以进行压缩。一个更好的例子是,如果通过静态文件处理程序提供javascript(即javascript文件来自磁盘上的.js文件),则它将更改静态文件处理程序以查看是否启用了压缩并可以对其进行压缩。如果javascript来自对script.axd的调用或其他“动态”处理程序,则它将检查dynamicTypes。
所以您可能会问为什么要两节?原因很简单,因为静态文件是静态文件,所以可以压缩然后缓存它们。因此,我们可以使用静态缓存规则更加自由,因为可以为第一个请求该文件的人压缩文件,然后缓存该压缩副本。将来对同一文件的请求可以直接从缓存中提供。当然,系统会处理可能对文件进行的任何修改并更新缓存。
使用动态内容,该文件对于每个请求,每个用户等可能都不同。因此,IIS不会尝试缓存压缩副本,而只是每次都对其进行压缩。
希望这是足够的信息,可以帮助您入门。附带说明,使用静态压缩,它实际上并不会为第一个用户(通常)进行压缩,并且需要一些人的请求才能进行压缩内容的工作。