Izinkan saya menjelaskan terlebih dahulu mengapa saya menulis artikel ini dan mengapa saya bergumul dengan masalah kecil ini. Pertama-tama, mengaktifkan kompresi gzip pada file statis sangat berguna untuk meningkatkan kecepatan akses situs web, dan secara efektif mengurangi waktu yang dibutuhkan laba-laba untuk merayapi halaman statis seperti menyalakan kompresi file dinamis. 64 masalah perayapan, jadi di satu sisi, kecepatan situs web yang cepat kondusif untuk meningkatkan pengalaman pengguna. Di sisi lain, blog administrator Google telah memperjelas tahun ini bahwa kecepatan situs web adalah salah satu faktor peringkat, dan untuk menggunakan host asing. untuk membangun situs Baidu Cina Optimasi dan waktu yang tidak memuaskan akan menyebabkan berkurangnya perayapan halaman internal oleh Baidu Spider. Guoping juga menyebutkannya sebelumnya dalam artikel blognya: Bagaimana kecepatan pemuatan halaman web mempengaruhi efek SEO? Dalam jangka waktu tertentu, total waktu yang dibutuhkan spider untuk meng-crawl website adalah tetap. Jika kecepatan crawling meningkat maka jumlah halaman yang dirayapi akan semakin banyak, begitu pula sebaliknya.
Oke, mari kita mulai dengan teks utama. Pada pertanyaan 2 artikel sebelumnya “Hasil eksperimen laba-laba merayapi halaman statis dan memicu kompresi gzip”, Saya menebak bagaimana versi terkompresi halaman statis gzip disimpan di server menjadi bingung untuk waktu yang lama Setelah itu, saya menemukan bahwa alasan terakhir untuk perbedaan hasil gzip yang dikembalikan oleh kedua host adalah versi iis daripada pengaturan folder cache yang menurut saya terlalu kecil.
Faktanya, iis7 memiliki pembaruan yang lebih besar daripada iis6 dalam kompresi statis. Di IIS6, kompresi statis dilakukan pada thread yang berbeda, jadi setelah menerima permintaan HTTP, yang pertama dikirim ke browser. Versi HTML tidak terkompresi, dan IIS6 akan dimulai menggunakan utas berbeda untuk mengompresi file dan menyimpan versi terkompresi di folder cache dari file terkompresi untuk waktu yang lama. Di masa lalu, yaitu di server IIS6, setelah kompresi selesai, untuk setiap permintaan HTTP untuk versi terkompresi dari file statis, IIS6 akan langsung memanggil versi terkompresi dari folder cache dan mengembalikannya ke browser.
Namun di IIS7, kompresi dilakukan pada thread utama, dan untuk menghemat biaya kompresi, IIS7 tidak menyimpan versi kompresi jangka panjang dari semua permintaan HTTP tetapi hanya file statis yang sering diakses oleh pengguna pertama kali saya mengunjunginya, itu tidak dikompresi. Versi terkompresi dikembalikan ketika saya mengunjunginya lagi dalam waktu singkat, tetapi versi yang tidak terkompresi dikembalikan ketika saya mengunjunginya setelah beberapa menit. Di sini kita dapat memahami bahwa IIS7 sebenarnya tidak menyimpan versi terkompresi ke folder cache, tetapi hanya menyimpannya di memori server, atau menyimpan sementara versi terkompresi ke folder cache dan menghapusnya setelah beberapa saat.
Metode IIS7 untuk menentukan file mana yang sering diakses dan mematuhi standar kompresi adalah dua properti berikut di system.webServer/serverRuntime, frequentHitThreshold dan frequentHitTimePeriod. Jika IIS menerima akses ke file statis yang melebihi ambang batas frequentHitThreshold dalam periode frequentHitTimePeriod, IIS7 akan mengompresi file statis seperti IIS6 dan menyimpan versi terkompresi di folder cache dari file terkompresi untuk waktu yang lama. Jika versi file yang di-cache sudah ada di folder cache ketika pengguna mengakses file di situs web, IIS7 tidak akan lagi menilai logika frequentHitThreshhold dan langsung mengembalikan versi terkompresi ke browser.
Setting ini memang sangat menyakitkan, namun jawaban resmi Microsoft adalah dapat digunakan untuk meningkatkan kinerja server. . . Jadi jika Anda ingin IIS7 dapat mengompresi seperti IIS6, ada dua solusi, tentu saja keduanya mengubah nilai frequentHitThreshold dan frequentHitTimePeriod:
Yang pertama adalah menambahkan konten berikut ke web.config, sesuaikan frequentHitThreshold menjadi 1, dan sesuaikan frequentHitTimePeriod menjadi 10 menit
<sistem.webServer>
<serverRuntime diaktifkan=benar
frequentHitThreshold=1
frequentHitTimePeriod=00:10:00/>
</sistem.webServer>
Metode kedua adalah membuka %windir%/system32/inetsrv/appcmd.exe, lalu masukkan string perintah berikut di antarmuka baris perintah, lalu tekan Enter
atur config -bagian:system.webServer/serverRuntime -frequentHitThreshold:1
Pejabat Microsoft menyarankan bahwa pendekatan yang tidak terlalu radikal adalah dengan tidak menurunkan frequentHitThreshold tetapi meningkatkan frequentHitTimePeriod, yang lebih moderat untuk kinerja server. Yang ingin saya sampaikan disini adalah bagi sobat yang memiliki VPS disarankan untuk mengaturnya secara manual, apakah pengguna virtual host dapat mengaturnya tergantung pada penyedia layanannya, sayangnya saya tidak bisa mengubahnya. Semuanya, cobalah