2

現在、サーバーとしてNGINXを使用しており、memcacheを使用してdbクエリとphpのページをキャッシュしています。

バージョン番号付けシステムがあり、更新または挿入が発生すると、このバージョン番号がバンプされます。その結果、各キーにこのバージョン番号が追加されるため、memcacheは常に新しいデータをフェッチします。読み取り/書き込み%分割が80/20%であるため、ほとんどの場合、memcacheはDBにアクセスせずにデータを返します。

次に、このキャッシュ戦略をサーバーレベルに移動し、NGINXとmemcacheモジュールが、バージョン番号とともにリクエストURIを使用してGETリクエストをキャッシュすることを計画しています。

これを達成する方法についてのフィードバックが必要でした

  • NGINXのmemcacheに保存されているこのバージョン番号を取得できますか?(これは、リクエストURIに追加するために使用されます)
  • ログインしたユーザーを処理するにはどうすればよいですか?(ログインしたユーザーにCookieを設定し、memcacheではなくバックエンドにリクエストを渡すだけでこのCookieがnginxに存在するかどうかを確認できますか)
4

1 に答える 1

2

1)残念ながら、「バニラ」nginxではこれを行うことはできません。しかし、魔女がそれを実装するのを助けることができるサードパーティのnginxモジュールがいくつかあります。ご覧ください

拡張memcachedプロトコルのサポート https://github.com/bpaquet/ngx_http_enhanced_memcached_modulehttp://wiki.nginx.org/NginxHttpMemcModule

価値評価 https://github.com/vkholodkov/nginx-eval-module

github.com/agentzh/ngx_openresty(多くのパッチとモジュールを備えたnginx)に機会を与えることをお勧めします。NGINXスクリプティングagentzh.org/misc/slides/nginx-conf-scripting/nginx-conf-scriptingに関するすばらしいプレゼンテーション。 html

2)インターネット上にはロギングユーザーのキャッシュを無効にする方法の例がたくさんあります

    if ($http_cookie ~* "auth_user") {
        # do some thing, set flag or so  
    }
于 2012-08-25T13:01:57.177 に答える