IIS7 gzip'ini etkinleştir


229

IIS7'nin js ve css gibi statik dosyaları gzip etmesini nasıl sağlayabilirim ve IIS7'nin istemciye göndermeden önce gerçekten gzipingi olup olmadığını nasıl test edebilirim?

Yanıtlar:


243

Yapılandırma

GZIP sıkıştırmasını tamamen Web.configdosyanızda etkinleştirebilirsiniz . Bu özellikle paylaşılan barındırma kullanıyorsanız ve IIS'yi doğrudan yapılandıramıyorsanız veya yapılandırmanızın hedeflediğiniz tüm ortamlar arasında taşınmasını istiyorsanız kullanışlıdır.

<system.webServer>
  <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>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

Test yapmak

Sıkıştırma işleminin çalışıp çalışmadığını test etmek için Chrome veya Firebug için Firefox'taki geliştirici araçlarını kullanın ve HTTP yanıt başlığının ayarlandığından emin olun:

Content-Encoding: gzip

Yanıt kodu 304 (Değiştirilmedi) ise bu üstbilginin mevcut olmayacağını unutmayın. Bu durumda, tam bir yenileme yapın (yenileme düğmesine basarken shift veya kontrol tuşunu basılı tutun) ve tekrar kontrol edin.


@DenNukem, üzgünüm gerçekten emin değilim. Bunu yalnızca IIS7'de test ettim. Yorum yapmak isteyen var mı?
Drew Noakes

21
Dikkat - yalnızca applicationhost.config dosyasındaki httpCompression bölümünün kilidi açıksa çalışır. Varsayılan olarak, bölüm değişiklikler için kilitlidir, bu nedenle web.config dosyasında geçersiz kılma çalışmaz. Bu birkaç saat boşa. stackoverflow.com/a/2894695/245460 , aşağıdaki makaleye bakın.
Karel Kral

Web Rolü'nün yüklü bir özelliğinin ve ayrıca MSDN'den: "MIME türleri için joker karakterler girişleri de ekleyebilirsiniz. Ancak, yalnızca web sunucusu düzeyi için MIME türlerini ayarlayabilirsiniz. Örneğin, statik sıkıştırmayı etkinleştirmek için varsayılan web sitesi için tüm MIME türleri, önce sunucu düzeyi için MIME türleri için joker karakter girişleri ekleyin ve ardından varsayılan web sitesi için statik sıkıştırmayı etkinleştirin. "
Luke Puplett

12
Dinamik sıkıştırma, Sunucuda Dinamik İçerik Sıkıştırma modülü yüklü olmadığı sürece de çalışmayacaktır (web platformu yükleyicisi üzerinden erişilebilir). Css / Js paketleri kullanıyorsanız buna ihtiyacınız olacak.
Mark

sadece css sıkıştırılıyor, .jsdeğil. Ayrıca, eklemeyi denedim application/x-javascript. Tomcat ile birlikte kullanıldığında directoryparametre kaldırıldı .
coding_idiot

58

Özelliği Windows Özellikleri kontrol panelinden etkinleştirmeniz gerekir:

IIS özelliği ekran görüntüsü


16
Windows Server 2008 R2'de bu, Sunucu Yöneticisi> Roller> Web Sunucusu (IIS) altında bulunur. "Roller" bölümünde "Rol Hizmetleri Ekle" yi tıklayın. "Dinamik İçerik Sıkıştırma", "Performans" başlığı altında listelenir.
Jonathan Little

37

HttpModule'de Global Gzip

Son IIS örneğine (paylaşılan barındırma ...) erişiminiz yoksa, bu kodu her HttpApplication.Begin_Request olayına ekleyen bir HttpModule oluşturabilirsiniz:

HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;

Test yapmak

Kudos, test olmadan hiçbir çözüm yapılmaz. Firefox eklentisini kullanmak istiyorum " Liveheaders " sıkıştırma ve dosya boyutu (sunucudaki dosya boyutuyla karşılaştırabileceğiniz) dahil olmak üzere tarayıcı ve sunucu arasındaki her http mesajıyla ilgili tüm bilgileri gösterir.


3
Paylaşımlı barındırma kullanıyorum ve GZIP çıktı sıkıştırmayı etkinleştirmek için herhangi bir kod yazmasına gerek yoktu. Sadece Web.config ile mümkün oldu. Cevabımı görün: stackoverflow.com/questions/702124/enable-iis7-gzip/…
Drew Noakes

2
İlk üç satırı sıkıştırmak istediğim bir aspx sayfasının başına yerleştirdim ve işe yarıyor! Teşekkür ederim! Bu, diğer tüm yaklaşımlardan çok daha az güçlük çekiyor ve benim için IIS 6'da çalışıyor.
DenNukem

1
Bunu yapmanın yolu kesinlikle budur.
Matthew James Davis


2

Bu özelliği sadece Charlie'nin belirttiği gibi Windows özelliklerine eklemem gerekiyordu. 10 veya sunucu 2012 + 'da bulamayan insanlar için aşağıdaki gibi bulun. Biraz mücadele ettim

Windows 10

resim açıklamasını buraya girin

Windows Server 2012 R2

resim açıklamasını buraya girin

pencere sunucusu 2016

resim açıklamasını buraya girin


1

Firebug ile YSlow kullanıyorsanız ve sayfa performansınızı analiz ederseniz, YSlow size sayfanızdaki hangi eserlerin gziplenmediğini kesinlikle söyleyecektir!





0

Bir Alman / Deutsche Server ile mücadele etmek zorunda olan tüm zavallı çocuklar için :)

auf deutsch bitte schön

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.