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
sumber
appcmd
untuk mengatur pengaturan level aplikasi (yang mungkin jauh lebih mudah).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:
sumber
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
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.
sumber