iis http压缩中静态和动态内容相同类型的含义

meaning of same types for static and dynamic content in iis http compression

我正在查看 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 响应时会发生什么

IIS 提供的内容是静态的或动态的。在大多数情况下,如果您的内容由 ASP.NET 或 Classic ASP 等处理程序提供,则它属于动态存储桶,如果它是直接从磁盘读取的文件,则它是静态的.您给出的示例显然无关紧要,因为如果 application/javascript 被提供,并且两者都启用,那么它就有资格进行压缩。一个更好的例子是,如果 javascript 是通过静态文件处理程序提供的(即 javascript 文件来自磁盘上的 .js 文件),那么它将更改静态文件处理程序以查看如果启用了压缩并且可以压缩它。如果 javascript 来自对 script.axd 或其他 "dynamic" 处理程序的某些调用,那么它将检查 dynamicTypes。

所以您可能会问为什么要分两个部分?原因很简单,静态文件可以压缩然后缓存,因为这些文件是静态的。因此,我们可以更自由地使用静态缓存规则,因为可以为第一个请求它的人压缩文件,然后缓存该压缩副本。对同一文件的未来请求可以直接从缓存中获取。当然,系统会处理文件可能发生的任何修改并更新缓存。

对于动态内容,该文件可能因每个请求、每个用户等而不同。因此,IIS 不会尝试缓存压缩副本,而是每次都简单地压缩它。

希望这些信息足以帮助您入门。旁注,对于静态压缩,它实际上不会为第一个用户(通常)进行压缩,并且在压缩内容之前需要几个人的请求。