значение одних и тех же типов для статического и динамического содержимого в сжатии iis http - PullRequest
0 голосов
/ 07 апреля 2019

Я просматриваю файл ApplicationHost.config на сервере IIS, чтобы понять настройки сжатия 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 в обоих разделах. Теперь предположим, что включено динамическое и статическое сжатие содержимого, что произойдет, когда мы передадим Http-ответ с Content-Type application/javascript?

1 Ответ

1 голос
/ 07 апреля 2019

Контент, обслуживаемый IIS, является статическим или динамическим.По большей части, если ваш контент обслуживается обработчиком, таким как ASP.NET или Classic ASP, он попадает в динамическое ведение, если это файл, считываемый прямо с диска, то он статический.Приведенный вами пример, очевидно, не имеет значения, потому что, если application / javascript обслуживается и включен обоими, тогда он пригоден для сжатия.Лучший пример - сказать, что если javascript обслуживается через обработчик статического файла (т. Е. Файл javascript из файла .js на диске), то он изменит обработчик статического файла, чтобы увидеть, включено ли сжатие, и может сжать его.,Если javascript происходит от какого-то вызова script.axd или другого «динамического» обработчика, он будет проверять dynamicTypes.

Так что вы можете спросить, почему два раздела?Причина в том, что статические файлы могут быть сжаты, а затем кэшированы, потому что файлы, ну, в общем, статические.Поэтому мы можем быть намного более либеральными с нашими правилами статического кэширования, потому что файл может быть сжат первым, кто его запросит, а затем кэширует эту сжатую копию.Будущие запросы к этому же файлу могут обслуживаться непосредственно из кэша.Конечно, система обрабатывает любые изменения, которые могут произойти с файлом, обновляющим кеш.

Что касается динамического содержимого, то этот файл может отличаться для каждого запроса, каждого пользователя и т. Д. В результате IIS не пытается кэшировать сжатую копию и просто сжимает ее каждый раз.

Надеюсь, этого достаточно, чтобы начать работу.Заметьте, что при статическом сжатии он фактически не сжимается для первого пользователя (как правило), и ему требуется пара человек, запрашивающих, прежде чем он начнет сжимать содержимое.

...