リクエストURIとクエリキャッシュに基づいてnginxを使用してキャッシュキーを生成しています。キャッシュキーが見つからない場合は、直接memcacheをチェックしてPHP-FPMからページを提供します。私の問題は、多くのURLがさまざまな順序で入ってくるクエリー文字列オプションを持っていて、レスポンスごとに2つ以上の別々のキャッシュキーが生成されるということです。可変パラメタを使用したNginxキャッシング
私のキャッシュ設定のようなものです:
http://example.com/api/2.2/events.json?id=53&type=wedding&sort=title&limit=10
http://example.com/api/2.2/events.json?id=53&limit=10&type=wedding&sort=title
http://example.com/api/2.2/events.json?id=53&limit=10&sort=title&type=wedding
:だから、異なる順序でクエリ文字列のparamsでこれらのように入ってくるURLが同じタイプの複数の可能なキャッシュキーを生成してしまう
set $cache_key "$uri?$args";
n!可能性...
最後に、memcacheは、クエリ文字列パラメータの順序が異なるため、キャッシュされたコンテンツの潜在的なn!-1複製コピーがあるため、より速くいっぱいになることがよくあります。これを避けるためにキャッシュキーを設定する前にアルファベット順に並べ替える方法はありますか?この問題をうまく解決する他の方法はありますか?
問題は、それぞれ独自のパラメータセットを持つ多数のAPI呼び出しが多数存在することです。それらのうちのいくつかは 'limit'のようにグローバルになっていますが、そのほとんどはAPI呼び出しに依存しています。埋め込みPerlのリンクをありがとう - 私は他のソリューションを待っている間にそれをチェックします。 –