Kompresja IIS została włączona: Wpisz opis obrazu tutaj

Poniżej znajduje się tag httpcompression web.config:

<httpCompression
      directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"
      minFileSizeForComp="1"
      staticCompressionIgnoreHitFrequency="true"
      dynamicCompressionIgnoreHitFrequency="true">
  <dynamicTypes>
    <add mimeType="*/*" enabled="true" />
  </dynamicTypes>
  <staticTypes>
    <add mimeType="*/*" enabled="true" />
  </staticTypes>
</httpCompression>  

Widzę tylko pliki CSS i JavaScript, są kompresowane podczas uruchamiania aplikacji internetowej: Wprowadź opis obrazu tutaj Wpisz opis obrazu tutaj

Niestety, inne pliki nie są kompresowane:

enter image description here

Nie widzę "IIS tymczasowe skompresowane pliki" w "C: inetpub temp".

Czy ktoś może przedstawić wskazówkę, jak to zdiagnozować?

Aktualizacja [2020-08-13] Edytor konfiguracji na Windows Server 2016:

enter image description here

Aktualizacja [2020-08-13] Per @ Kul-Tigin, dynamiczna kompresja zawartości musi być zainstalowana: Wpisz opis obrazu tutaj

2
Hong 25 lipiec 2020, 16:01

1 odpowiedź

Najlepsza odpowiedź
  1. Nie ma takiego ustawienia o nazwie dynamicCompressionIgnoreHitFrequency, usuń go.

  2. 1 (w bajtach) dla minFileSizeForComp jest trochę ostry. Kompresowanie małych plików po prostu zmniejsza rozmiar odpowiedzi. Pozostaw go 2700 jako domyślnie.

  3. W przeciwieństwie do ustawiania wartości atrybutów (jak w staticCompressionIgnoreHitFrequency="true"), dodając ustawienie, ponieważ węzeł nie naddaje dziedziczonych.

    Przed dodaniem, usunięcie ewentualnie dziedziczone odpowiednie ustawienie lub jasne, wszystkie odziedziczone są dobrą praktyką, aby zapobiec błędom (zwłaszcza ciche).

    W przeciwnym razie błąd może wystąpić błąd lub gorszy błąd milczący może złamać ustawienie.

  4. 100 (w MB) na pole aplikacyjne limit przestrzeni może być niewystarczający dla Twoich potrzeb. Jeśli prawidłowo pamiętam, że większość plików są webassembly pliki megababytes.

    Ponieważ chcesz, aby wszystkie pliki były skompresowane, jeśli to możliwe; Określ wartość wystarczająco dużą.

    Duże jak to możliwe; Suma nieskompresowanych długości wszystkich plików. Powiedz 2048 MB.

    W ten sposób nie można osiągnąć limitu miejsca na dysku, więc żaden ze skompresowanych buforów nie zostaną usunięte z powodu braku przestrzeni.

    Dopóki oryginalny plik nie został zmieniony, sprężone bufory przetrwają i są dostarczane.

    Mam 3-letnie skompresowane pliki pamięci podręcznej przechowywane na moich serwerach, gotowe do dostarczenia BTW.

Daj więc próbę.

Jeśli nie działa, podaj więcej informacji o nagłówkach żądania i plików dostarczanych jako nieskompresowanych.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpCompression 
        sendCacheHeaders="false" 
        directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" 
        doDiskSpaceLimiting="true" 
        maxDiskSpaceUsage="2048" 
        minFileSizeForComp="2700" 
        noCompressionForHttp10="true" 
        noCompressionForProxies="true" 
        noCompressionForRange="true" 
        staticCompressionIgnoreHitFrequency="true" 
        staticCompressionDisableCpuUsage="100" 
        staticCompressionEnableCpuUsage="50" 
        dynamicCompressionDisableCpuUsage="90" 
        dynamicCompressionEnableCpuUsage="50" 
        dynamicCompressionBufferLimit="65536">
          <dynamicTypes>
            <clear />
            <add mimeType="*/*" enabled="true" />
          </dynamicTypes>
          <staticTypes>
            <clear />
            <add mimeType="*/*" enabled="true" />
          </staticTypes>
        </httpCompression>  
    </system.webServer>
</configuration>
1
Hong 27 lipiec 2020, 01:52