まず、私がなぜこの記事を書いたのか、そしてなぜこの小さな問題に悩んでいるのかを説明しましょう。まず、静的ファイルの gzip 圧縮をオンにすることは、Web サイトのアクセス速度を向上させるのに非常に役立ち、スパイダーが静的ページをクロールする時間を効果的に短縮します。同時に、Baidu スパイダーに 200 0 が発生することもありません。動的ファイル圧縮をオンにするなど。 64 クロールの問題があるため、Web サイトの速度が速いことはユーザー エクスペリエンスを向上させるのに役立つ一方で、Google 管理者のブログは今年、Web サイトの速度がランキング要素の 1 つであり、外国のホストを使用する場合に重要であることを明らかにしました。 Baidu の中国語サイトを構築するための最適化と不十分な時間がかかると、Baidu Spider による内部ページのクロールが減少します。Guoping 氏も以前、ブログ記事「Web ページの読み込み速度は SEO 効果にどう影響するか?」で言及しました。一定期間内に、スパイダーが Web サイトをクロールするのにかかる合計時間は一定です。クロール速度が増加すると、クロールされるページの数は増加します。逆も同様です。
さて、本文から始めましょう。 前回の記事「スパイダーが静的ページをクローリングして gzip 圧縮をトリガーした実験結果」の質問 2 では、圧縮された gzip 静的ページがサーバーにどのように保存されるかについて推測しました。その後、2 つのホストから返される gzip 結果が異なる最終的な理由は、私が推測したキャッシュ フォルダーの設定が小さすぎるのではなく、iis のバージョンであることがわかりました。
実際、iis7 では、静的圧縮において iis6 よりも大きなアップデートが行われています。IIS6 では、静的圧縮は別のスレッドで実行されるため、HTTP リクエストを受信した後、最初にブラウザに送信される HTML バージョンは圧縮されておらず、IIS6 が起動します。別のスレッドを使用してファイルを圧縮し、圧縮バージョンを圧縮ファイルのキャッシュ フォルダーに長期間保存します。以前、つまり IIS6 サーバー上では、圧縮が完了した後、静的ファイルの圧縮バージョンに対する HTTP 要求に対して、IIS6 はキャッシュ フォルダーから圧縮バージョンを直接呼び出してブラウザーに返していました。
しかし、IIS7 では、圧縮はメインスレッドで実行され、圧縮コストを節約するために、IIS7 はすべての HTTP 要求の長期圧縮バージョンを保存せず、ユーザーが頻繁にアクセスする静的ファイルのみを保存します。初めてアクセスしたときは圧縮されていませんでしたが、しばらくして再度アクセスすると圧縮されていないバージョンが返されました。ここで、IIS7 は実際に圧縮バージョンをキャッシュ フォルダーに保存するのではなく、サーバーのメモリに保存するだけであるか、圧縮バージョンをキャッシュ フォルダーに一時的に保存し、しばらくすると削除することがわかります。
IIS7 が頻繁にアクセスされるファイルを定義し、圧縮標準に準拠する方法は、system.webServer/serverRuntime の次の 2 つのプロパティ、frequencyHitThreshold およびfrequencyHitTimePeriod です。 IIS が、frequencyHitTimePeriod 期間内に、frequencyHitThreshold のしきい値を超える静的ファイルへのアクセスを受信した場合、IIS7 は、IIS6 と同様に静的ファイルを圧縮し、圧縮されたバージョンを圧縮ファイルのキャッシュ フォルダーに長期間保存します。ユーザーが Web サイト上のファイルにアクセスするときに、キャッシュ フォルダーにファイルのキャッシュ バージョンが既に存在する場合、IIS7 は FrequencyHitThreshhold のロジックを判断せず、圧縮バージョンをブラウザーに直接返します。
この設定は確かに非常に面倒ですが、Microsoft の公式の答えは、サーバーのパフォーマンスを向上させるために使用できるというものです。 。 。したがって、IIS7 で IIS6 と同様に圧縮できるようにしたい場合は、もちろん、どちらも FrequencyHitThreshold と FrequencyHitTimePeriod の値を変更する 2 つの解決策があります。
1 つ目は、次の内容を web.config に追加し、frequencyHitThreshold を 1 に、frequencyHitTimePeriod を 10 分に調整します。
<システム.ウェブサーバー>
<serverRuntime が有効 = true
頻繁なヒットしきい値=1
frequencyHitTimePeriod=00:10:00/>
</system.webServer>
2 番目の方法は、%windir%/system32/inetsrv/appcmd.exe を開き、コマンド ライン インターフェイスに次のコマンド文字列を入力して、Enter キーを押すことです。
set config -section:system.webServer/serverRuntime -frequentHitThreshold:1
Microsoft 関係者は、それほど過激ではないアプローチとして、frequencyHitThreshold を下げるのではなく、サーバーのパフォーマンスをより穏やかにする FrequencyHitTimePeriod を増やすことを提案しています。ここで注意したいのは、VPSを持っている友人の場合は、仮想ホストユーザーが設定できるかどうかはサービスプロバイダーに依存するため、残念ながら変更することはできません。皆さんも試してみてください