Perlu bantuan dengan beberapa pengaturan kompresi IIS7 web.config


9

Saya mencoba mengonfigurasi pengaturan kompresi IIS7 saya di file web.config saya. Saya mencoba mengaktifkan permintaan HTTP 1.0 menjadi gzip.

MSDN memiliki semua info tentangnya di sini .

Apakah mungkin memiliki informasi konfigurasi ini di file web.config situs web saya sendiri? Atau apakah saya perlu mengaturnya di tingkat aplikasi? Saat ini, saya memiliki kode itu di web.config saya ...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

Itu tidak berfungsi :( Permintaan HTTP 1.1 semakin dikompresi, hanya saja tidak 1.0.

Halaman MSDN di atas mengatakan bahwa ia dapat digunakan di: -

  • Machine.config
  • ApplicationHost.config
  • Root aplikasi Web.config
  • Aplikasi Web.config
  • Direktori Web.config

Jadi, dapatkah kita menetapkan pengaturan ini pada basis per-situs web, secara programatik dalam file web.config? (ini adalah file Aplikasi Web.config ...) Apa yang saya lakukan salah?

Bersulang :)

EDIT: Saya ditanya bagaimana saya tahu HTTP1.0 tidak mendapatkan kompresi. Saya menggunakan Aturan Pelacakan Permintaan Gagal, yang melaporkan kembali: -

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

Jawaban:


3

Perhatikan fakta bahwa pengaturan IIS 7.x web.config dari

noCompressionForProxies="false"

Tidak dihormati di level web.config. Itu harus diatur dalam C: \ Windows \ System32 \ inetsrv \ config \ ApplicationHost.config seperti:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

Pastikan dan lakukan reset IIS setelah mengubah pengaturan.

Permintaan ditentukan berasal dari proxy oleh IIS jika permintaan web klien memiliki tajuk HTTP "Via" seperti:

Via: 1.1 foo

Anda juga dapat menggunakan appcmduntuk mengatur pengaturan level aplikasi (yang mungkin jauh lebih mudah).
Pure.Krome

2

Setelah sedikit riset, itu 'terkunci' secara default di level aplikasi. Karena itu, perlu 'dibuka'. ini dapat dicapai melalui baris perintah atau melalui alat admin iis7 (unduhan ekstra).

misalnya. appcmd set config -section:urlCompression /doDynamicCompression:true

Refrences:


1

Bagaimana Anda menguji bahwa permintaan HTTP1.0 tidak dikompres? Mungkinkah klien yang Anda gunakan tidak memberi tahu server bahwa ia dapat menerima respons terkompresi?

Jika Anda dapat melihat tajuk yang dikirim oleh klien (disajikan oleh klien pengujian itu sendiri, menggunakan Firebug atau serupa jika Anda menguji di Firefox atau IEHTTPHeaders jika Anda menguji di IE, atau dengan mengendus lalu lintas menggunakan alat eksternal), Anda harus lihat sesuatu seperti

Accept-Encoding: compress, gzip, deflate

di suatu tempat di sana. Jika klien tidak memberi tahu server bahwa ia dapat menerima respons terkompresi maka server tidak akan mengirim respons apa pun yang Anda miliki di sisi server.

Masalah lain dapat terjadi jika Anda menguji melalui server proxy yang mengidentifikasi dirinya sendiri. Dalam hal ini pengaturan noCompressionForProxies mungkin diutamakan dan memblokir kemungkinan respons terkompresi.

Satu hal yang perlu diperhatikan adalah bahwa beberapa klien dan proksi yang mengirim permintaan HTTP1.0 (biasanya perangkat lunak yang lebih tua) tidak akan dengan benar menangani respons terkompresi jika mereka mendapatkannya, jadi jika Anda mengaktifkan kompresi untuk respons terhadap permintaan HTTP1.0 pastikan Anda uji situs / aplikasi Anda di semua klien / perangkat lunak proxy yang Anda harapkan pengunjung / pengguna gunakan. Ini bukan masalah jika Anda dapat menjamin audiens target Anda akan menggunakan perangkat lunak tertentu (jika misalnya aplikasi ini hanya untuk jaringan internal perusahaan) tetapi sebaliknya ada banyak kombinasi untuk menguji yang mengapa sebagian besar server menonaktifkan kompresi untuk 1.0 permintaan sepenuhnya.


Saya menguji bahwa permintaan HTTP1.0 tidak dikompres dengan menggunakan Aturan Pelacakan Permintaan Gagal, yang melaporkan kembali: - DYNAMIC_COMPRESSION_START DYNAMIC_COMPRESSION_NOT_SUCESS Alasan: 3 Alasan: NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END
Pure.Krome
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.