ホームページ  >  記事  >  運用・保守  >  Nginxのキャッシュ使用量

Nginxのキャッシュ使用量

(*-*)浩
(*-*)浩オリジナル
2019-12-26 15:07:113914ブラウズ

Nginxのキャッシュ使用量

Web キャッシュはクライアントと「オリジン サーバー」の間に存在し、表示されているすべてのコンテンツのコピーを保持します。クライアントがキャッシュに保存されているコンテンツを要求した場合、サーバーと通信することなく、コンテンツをキャッシュから直接取得できます。 (推奨される学習: nginx の使用 )

この方法では、Web キャッシュがクライアントから「近い」ため、応答パフォーマンスが向上し、アプリケーションとアプリケーションをより効率的に使用できます。サーバーは、リクエストごとにページを生成する必要がないためです。

ブラウザとアプリケーション サーバーの間には、クライアント ブラウザ キャッシュ、中間キャッシュ、コンテンツ配信ネットワーク (CDN)、サーバー上の負荷分散とリバース プロキシなど、複数の「潜在的な」キャッシュが存在します。キャッシュは、まさにリバース プロキシと負荷分散のレベルで、パフォーマンスの向上に大きく役立ちます。

たとえば、私は昨年、読み込みが遅い Web サイトのパフォーマンスを最適化するというタスクを引き継ぎました。

最初に私の注意を引いたのは、この Web サイトがホームページを生成するのに 1 秒以上かかったということです。一連のデバッグの結果、読み込みが遅い原因は、ページがキャッシュ不可としてマークされている、つまりページがすべてのリクエストに応じて動的に生成されているためであることがわかりました。

ページ自体は頻繁に変更する必要がなく、パーソナライズも必要ないため、変更する必要はありません。

結論を検証するために、ページを 5 秒ごとにキャッシュするようにマークしましたが、この調整を行うだけで、明らかにパフォーマンスの向上が感じられます。最初のバイトまでの時間が数ミリ秒に短縮され、ページの読み込みが大幅に高速化されました。

キャッシュを使用するとメリットを得られるのは大規模なコンテンツ配信ネットワーク (CDN) だけではありません。キャッシュにより、ロード バランサー、リバース プロキシ、アプリケーション サーバー フロントエンド Web サービスのパフォーマンスも向上します。

上記の例から、コンテンツ結果をキャッシュすると、毎回ページ生成作業を繰り返す必要がないため、アプリケーション サーバーをより効率的に使用できることがわかります。さらに、Web キャッシュを使用して Web サイトの信頼性を向上させることもできます。

サーバーがダウンしているかビジー状態の場合、ユーザーにエラー メッセージを返すのではなく、キャッシュされたコンテンツをユーザーに送信するように NGINX を構成することをお勧めします。これは、アプリケーション サーバーやデータベースに障害が発生した場合でも、Web サイトは一部またはすべての機能を維持できることを意味します。

基本キャッシュをインストールして構成する方法

基本キャッシュを有効にするために必要なコマンドは、proxy_cache_path と proxy_cache の 2 つだけです。 proxy_cache_path はキャッシュ パスと構成を設定するために使用され、proxy_cache はキャッシュを有効にするために使用されます。

proxy_cache_path/path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m

use_temp_path=off;

server {

...

location / {

proxy_cachemy_cache;

proxy_pass http://my_upstream;

}

}

1. キャッシュに使用されるローカル ディスク ディレクトリは /path/to/cache/

2 です。levels は /path/to/cache/ に 2 レベルの階層ディレクトリを設定します。

多数のファイルを 1 つのディレクトリに配置すると、ファイル アクセスが遅くなる可能性があるため、ほとんどの展開では 2 レベルのディレクトリ階層を推奨します。レベルパラメータが設定されていない場合、NGINX はすべてのファイルを同じディレクトリに配置します。

3.keys_zone は、キャッシュ キーとメタデータを保存するために使用される共有メモリ領域を設定します。これはタイマーの使用と似ています。

キーのコピーをメモリに配置すると、NGINX はディスクを取得せずにリクエストが「HIT」か「MISS」かを迅速に判断できるため、取得速度が大幅に向上します。

1MB のメモリ空間には約 8,000 個のキーを保存できるため、上記で構成した 10MB のメモリ空間にはほぼ 80,000 個のキーを保存できます。

4.max_size はキャッシュの上限を設定します (上記の例では 10G)。これはオプションです。値を指定しないと、キャッシュが増大し、利用可能なディスク領域がすべて消費されてしまいます。

キャッシュがこの制限に達すると、プロセッサはキャッシュ マネージャーを呼び出して、最も最近使用されていないファイルを削除し、キャッシュ領域をこの制限以下に減らします。

5.inactive は、項目がアクセスされずにメモリ内に保持される時間を指定します。上記の例では、ファイルが 60 分以内に要求されなかった場合、ファイルの有効期限が切れているかどうかに関係なく、キャッシュ マネージャーはそのファイルをメモリから自動的に削除します。このパラメータのデフォルト値は 10 分 (10m) です。

非アクティブなコンテンツは、期限切れのコンテンツとは異なることに注意してください。 NGINX は、キャッシュ コントロール ヘッダー (この例では Cache-Control:max-age=120) で指定された期限切れのコンテンツを自動的に削除しません。

期限切れのコンテンツは、指定された非アクティブ期間内にアクセスされなかった場合にのみ削除されます。

期限切れのコンテンツにアクセスすると、NGINX は元のサーバーからコンテンツを更新し、対応する非アクティブ タイマーを更新します。

6. NGINX は、キャッシュに書き込まれるファイルを最初に一時記憶領域に置きます。use_temp_path=off コマンドは、これらのファイルをキャッシュするときに同じディレクトリに書き込むように NGINX に指示します。

ファイル システム内での不必要なデータのコピーを避けるために、パラメーターをオフに設定することを強くお勧めします。 use_temp_path は、NGINX バージョン 1.7 および NGINX Plus R6 で導入されました。

最後に、proxy_cache コマンドは、URL が場所の部分 (この場合は `/`) と一致するコンテンツのキャッシュを開始します。また、proxy_cache コマンドをサーバー セクションに追加すると、独自の proxy_cache コマンドが指定されていない場所にあるすべてのサービスにキャッシュが適用されます。

以上がNginxのキャッシュ使用量の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。