मैं अनुरोध यूआरआई के आधार पर nginx के साथ एक कैश कुंजी उत्पन्न कर रहा हूं और क्वेरी पैराम जो सीधे मेमकेच की जांच करता है और फिर कैश कुंजी नहीं मिलने पर PHP-FPM से पृष्ठ परोसता है। मेरी समस्या यह है कि कई यूआरएल में क्वेरी स्ट्रिंग विकल्प होते हैं जो अलग-अलग ऑर्डर में आते हैं और इस प्रकार प्रति प्रतिक्रिया दो या दो से अधिक अलग कैश कुंजी उत्पन्न करते हैं।चरम परम क्रम के साथ Nginx कैशिंग
मेरे कैश सेटिंग है कुछ की तरह:
set $cache_key "$uri?$args";
तो URL भिन्न आदेश में क्वेरी स्ट्रिंग पैरामीटर वाला इस तरह में आते हैं एक ही प्रकार के लिए कई संभव कैश कुंजी पैदा अंत:
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
एन के लिए विज्ञापन मतली! संभावनाएं ...
अंत परिणाम यह है कि memcache अक्सर इसके मुकाबले बहुत तेज हो जाता है क्योंकि मेरे पास कैश की गई सामग्री की संभावित एन! -1 डुप्लिकेट प्रतियां होती हैं क्योंकि क्वेरी स्ट्रिंग पैरामीटर एक अलग क्रम में आते हैं। क्या इससे बचने के लिए कैश कुंजी सेट करने से पहले मैं उन्हें वर्णानुक्रमित कर सकता हूं? इस मुद्दे को सुन्दर तरीके से हल करने के अन्य तरीके हैं?
समस्या यह है कि कई सारे कई एपीआई कॉल प्रत्येक के पैरामीटर के सेट के साथ हैं। उनमें से कुछ 'सीमा' की तरह अधिक वैश्विक हैं, लेकिन उनमें से अधिकतर एपीआई-कॉल निर्भर हैं। एम्बेडेड पर्ल लिंक के लिए धन्यवाद - मैं अन्य समाधानों पर प्रतीक्षा करते समय इसे देख लूंगा। –