ホームページ > 運用・保守 > Nginx > Nginx のリバース プロキシ キャッシュと動的コンテンツ キャッシュ実装の詳細を分析する

Nginx のリバース プロキシ キャッシュと動的コンテンツ キャッシュ実装の詳細を分析する

王林
リリース: 2023-08-25 15:33:38
オリジナル
1360 人が閲覧しました

Nginx のリバース プロキシ キャッシュと動的コンテンツ キャッシュ実装の詳細を分析する

Nginx のリバース プロキシ キャッシュと動的コンテンツ キャッシュ実装の詳細の分析

Nginx は、高性能 Web サーバーおよびリバース プロキシ サーバーです。実際の Web アプリケーションでは、Web サイトのアクセス速度やパフォーマンスを向上させるために、リバース プロキシ キャッシュや動的コンテンツ キャッシュを使用して、Web ページの読み込みや応答を高速化することが必要になることがよくあります。この記事では、Nginx のリバース プロキシ キャッシュと動的コンテンツ キャッシュの実装の詳細を詳細に分析し、対応するコード例を示します。

1. リバース プロキシ キャッシュの実装の詳細

リバース プロキシ キャッシュとは、Nginx がリバース プロキシ サーバーとして機能しながら、クライアント リクエストの応答結果を独自のメモリまたはディスクにキャッシュできることを意味します。 、次回同じリソースが要求されたときにキャッシュされた結果を直接返すことができるため、アクセス速度が向上し、バックエンド サーバーの負荷が軽減されます。

  1. リバース プロキシ キャッシュを有効にする

まず、Nginx 構成ファイルでリバース プロキシ キャッシュ機能を有効にする必要があります。次の構成情報を http モジュールに追加できます。

http {
    ...
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

    server {
        ...
    }
}
ログイン後にコピー

上記の構成では、proxy_cache_path でキャッシュ パスと関連パラメーターを指定します。 levels パラメータはキャッシュのディレクトリ構造を指定し、keys_zone パラメータはキャッシュの名前とサイズを指定し、max_size パラメータはキャッシュの最大容量を指定します。キャッシュ、inactive パラメータはキャッシュの有効期限を指定し、use_temp_path パラメータはキャッシュに一時パスを使用するかどうかを指定します。上記の構成では、my_cache という名前のキャッシュを使用しています。

  1. リバース プロキシ キャッシュ ルールの構成

Nginx 構成ファイルでは、 location ディレクティブを使用してリバース プロキシ キャッシュ ルールを構成できます。たとえば、指定された URL パスをキャッシュすることができます。具体的な構成は次のとおりです:

server {
    ...
    
    location /cached {
        proxy_cache my_cache;
        proxy_cache_valid 200 304 10m;
        proxy_cache_use_stale error timeout invalid_header http_500;
        proxy_cache_background_update on;
        proxy_pass http://backend_server;
    }
}
ログイン後にコピー

上記の構成では、proxy_cache は使用するキャッシュ、proxy_cache_valid を指定します。キャッシュの有効期間を指定します。 proxy_cache_use_stale は、キャッシュの有効期限が切れたときに応答するために古いキャッシュを使用するかどうかを指定します。 proxy_cache_background_update は、バックグラウンドでキャッシュを更新するかどうかを指定します。 proxy_pass はバックエンド サーバーのアドレスを指定します。

  1. キャッシュのクリア

キャッシュを手動でクリアする必要がある場合は、proxy_cache_purge モジュールを使用してこれを実現できます。 Nginx 設定ファイルでは、次の設定を追加できます。

location /purge {
    bproxy_cache_purge my_cache "$scheme$request_method$host$request_uri";
}
ログイン後にコピー

上記の設定では、proxy_cache_purge でキャッシュをクリアするコマンドを指定し、キャッシュの名前と要求されたファイルを渡します。 URI。

2. 動的コンテンツ キャッシュの実装の詳細

動的コンテンツ キャッシュとは、リバース プロキシ サーバーがバックエンド サーバーの負荷を軽減している間に、Nginx が動的に生成されたコンテンツもキャッシュできることを意味します。応答性。

  1. 動的コンテンツ キャッシュを有効にする

まず、Nginx 構成ファイルで動的コンテンツ キャッシュ機能を有効にする必要があります。次の構成情報を http モジュールに追加できます。

http {
    ...
    fastcgi_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

    server {
        ...
    }
}
ログイン後にコピー

上記の構成では、fastcgi_cache_path でキャッシュ パスと関連パラメーターを指定します。これは、リバース プロキシ キャッシュ構成と似ています。ここでも、my_cache という名前のキャッシュを使用します。

  1. 動的コンテンツ キャッシュ ルールの構成

Nginx 構成ファイルでは、location ディレクティブを使用して動的コンテンツ キャッシュ ルールを構成することもできます。たとえば、指定された URL パスの動的コンテンツをキャッシュできます。具体的な構成は次のとおりです:

server {
    ...
    
    location /dynamic {
        fastcgi_cache my_cache;
        fastcgi_cache_valid 200 10m;
        fastcgi_cache_methods GET HEAD;
        fastcgi_cache_use_stale error timeout invalid_header http_500;
        fastcgi_cache_lock on;
        fastcgi_cache_lock_timeout 5s;
        fastcgi_pass backend_server;
    }
}
ログイン後にコピー

上記の構成では、fastcgi_cache は使用するキャッシュを指定します。 fastcgi_cache_valid キャッシュの有効期間を指定します。fastcgi_cache_methodsどの HTTP メソッドをキャッシュするかを指定します。fastcgi_cache_use_staleキャッシュの有効期限が切れたときに応答するために古いキャッシュを使用するかどうかを指定します。fastcgi_cache_lock キャッシュ ロックとロック タイムアウトを有効にするかどうかを指定します。fastcgi_passはバックエンド サーバーのアドレスを指定します。

    キャッシュのクリア
同様に、キャッシュを手動でクリアする必要がある場合があります。これを実現するには、

fastcgi_cache_purge モジュールを使用します。 Nginx 設定ファイルでは、次の設定を追加できます。

location /purge {
    fastcgi_cache_purge my_cache "$scheme$request_method$host$request_uri";
}
ログイン後にコピー
上記の設定では、

fastcgi_cache_purge でキャッシュをクリアするコマンドを指定し、キャッシュ名と要求された URI を渡します。

要約すると、この記事では、Nginx のリバース プロキシ キャッシュと動的コンテンツ キャッシュの実装の詳細を詳細に分析し、対応するコード例を示します。 Nginx のキャッシュ機能を適切に構成して使用することで、Web アプリケーションのパフォーマンスとユーザー エクスペリエンスを大幅に向上させることができます。

以上がNginx のリバース プロキシ キャッシュと動的コンテンツ キャッシュ実装の詳細を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート