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

问题描述 投票:0回答:1

我正在查看IIS服务器中的ApplicationHost.config文件,以了解Http Compression的配置。

我看到以下代码:

<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 http-compression
1个回答
1
投票

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

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

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

希望这足以让你开始。侧注,使用静态压缩它实际上不会为第一个用户压缩(通常),并且在通过压缩内容之前需要几个人请求。

© www.soinside.com 2019 - 2024. All rights reserved.