使用シナリオ: プロジェクトのページでは、頻繁に変更されず、個別のカスタマイズも伴わない大量のデータを読み込む必要があります。リクエストごとにデータを動的に生成すると、リクエストのルーティングとパラメータに基づいて結果をキャッシュするのと同じパフォーマンスが得られません。Nginx キャッシュを使用すると、リクエスト速度が大幅に向上します。 ベース コンテンツ キャッシュを有効にするには、proxy_cache_path と proxy_cache を設定する必要があります。前者はキャッシュ パスと構成を設定するために使用され、後者はキャッシュを有効にするために使用されます。 http { ... proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; サーバー{ proxy_cache マイキャッシュ; 位置 / { proxy_pass http://localhost:8000; } } } 対応するパラメータの説明: 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 ヘッダーで指定された期限切れのコンテンツ (この場合は 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 のコンテンツのキャッシュを有効にします。また、server セクションに proxy_cache ディレクティブを追加することもできます。これにより、独自の proxy_cache ディレクティブを指定していない場所内のすべてのサーバーにキャッシュが適用されます。 Nginx キャッシュ関連プロセス キャッシュに関与する NGINX プロセスがさらに 2 つあります。
次の例では、反復は 300 ミリ秒間、または 200 個の項目が読み込まれるまで続きます。 proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200; その他の一般的なパラメータ 設定例: proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; サーバー{ ... 位置 / { proxy_cache my_cache; # proxy_cache_key "$host$request_uri$cookie_user"; proxy_cache_min_uses 3; proxy_cache_methods GET HEAD POST; プロキシキャッシュの有効時間 200 302 10 分; proxy_cache_valid 404 1m; # proxy_cache_valid 任意 5m; proxy_pass http://localhost:8000; } } 対応するパラメータの説明:
キャッシュをクリアする HTTP PURGE メソッドを使用したリクエストを識別し、一致する URL に対応するキャッシュを削除するには、事前に設定を追加する必要があります。 1. http {} コンテキストに、$request_method 変数に依存する $purge_method などの新しい変数を作成します。 http { ... $request_method $purge_methodをマップする{ パージ1; デフォルト 0; } } 2. location {} ブロックで、キャッシュが設定されている場合は、proxy_cache_purge パラメータを導入して、キャッシュ要求をクリアする条件を指定します。たとえば、前の手順では、$request_methodを指定します サーバー{ 聞く 80; サーバー名 www.example.com; 位置 / { proxy_pass https://localhost:8002; proxy_cache マイキャッシュ; proxy_cache_purge $purge_method; } } 設定して有効にした後、キャッシュを無効にするパージ要求を送信できます。例: curl -X PURGE -D – https://www.example.com/* この例では、パブリック URL 部分 (アスタリスク ワイルドカード文字で指定) を持つリソースが削除されます。ただし、これらのキャッシュ エントリはキャッシュから完全に削除されるわけではありません。非アクティブと判断されるまで (proxy_cache_path の inactive パラメータによって決定)、またはキャッシュが消去されるまで (proxy_cache_path の purge によって決定)、またはクライアントがアクセスを試行するまで、ディスク上に残ります。 参考リンク:
要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Mybatis+mysqlはストアドプロシージャを使用してシリアル番号実装コードを生成します。
背景一時テーブルスペースは、データベースのソート操作を管理し、一時テーブルや中間ソート結果などの一時...
1. 背景私たちは時々社内研修を行っており、実験環境をよく利用しています。最初はdockerコンテナ...
sed は Unix の文字ストリーム エディタ、つまりストリーム エディタです。行指向であり、行単...
この記事では、ホイール抽選を簡単に実装するためのVueの具体的なコードを参考までに共有します。具体的...
Linuxシステムをお持ちでない場合は、ダウンロードとインストールについてはhttps://www....
この記事は主に、Nginx のフォワード プロキシとリバース プロキシ、および負荷分散機能の設定コー...
質問昨日、データベースSQLを書いているときに問題が発生しました。問題の根本は、SQL ステートメン...
目次1. 準備2. 展開プロセス3. アクセステストHalo は、ブログに慣れている学生に追加のオプ...
Vue2 の記述スタイルから Vue3 の形式に切り替えると、記述スタイルとコード構造にいくつかの変...
この記事では、Jingdongの詳細ページの画像の拡大を実現するためのjsの具体的なコードを紹介しま...
1. WEBを理解するWeb ページは主にテキスト、画像、ハイパーリンクなどの要素で構成されていま...
私のプロジェクトの特定の機能ではサーバーが rabbitmq にメッセージを送信する必要があるため、...
このソリューションの利点はシンプルさと使いやすさですが、欠点はダウンタイムが長くなることです。 した...
目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...
最近、サーバー上のアカウントが2つハッキングされ、パスワードが改ざんされました。幸い、まだ使えるアカ...