Sto generando una cache key con nginx in base all'URI della richiesta e ai parametri di query che controllano memcache direttamente e quindi serve la pagina da PHP-FPM se non viene trovata una chiave di cache. Il mio problema è che molti URL hanno opzioni di stringhe di query che arrivano in ordini diversi e quindi hanno generato due o più chiavi cache separate per risposta.Nginx caching con ordine param variabile
La mia impostazione della cache è qualcosa di simile:
set $cache_key "$uri?$args";
Così gli URL che vengono in come questi con params stringa di query in diversi ordini finiscono per generare più chiavi di cache possibili per lo stesso tipo:
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
Ad nauseum per n! possibilità ...
Il risultato finale è che Memcache spesso si riempie molto più velocemente di quanto dovrebbe perché ho un potenziale n! C'è un modo in cui posso ordinarli alfabeticamente prima di impostare la chiave di cache per evitare questo? Ci sono altri modi per risolvere elegantemente questo problema?
Il problema è che ci sono molte, molte possibili chiamate API ciascuna con il proprio set di parametri. Alcuni di questi sono più globali come 'limite', ma la maggior parte di essi sono dipendenti dalle chiamate API. Grazie per il collegamento Perl incorporato: lo verificherò mentre aspetto altre soluzioni. –