Tôi tạo khóa bộ nhớ cache với nginx dựa trên URI yêu cầu và tham số truy vấn kiểm tra memcache trực tiếp và sau đó phục vụ trang từ PHP-FPM nếu không tìm thấy khóa bộ nhớ cache. Vấn đề của tôi là nhiều URL có các tùy chọn chuỗi truy vấn đi kèm trong các đơn đặt hàng khác nhau và do đó tạo ra hai hoặc nhiều khóa bộ nhớ cache riêng biệt cho mỗi phản hồi.Nginx caching với thứ tự biến số
thiết lập bộ nhớ cache của tôi là một cái gì đó như:
set $cache_key "$uri?$args";
Vì vậy, các URL mà đi theo như thế này với params chuỗi truy vấn trong đơn đặt hàng khác nhau kết thúc tổng hợp nhiều phím bộ nhớ cache có thể cho cùng loại:
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
Quảng cáo nauseum cho n! khả năng ...
Kết quả cuối cùng là memcache thường lấp đầy nhanh hơn rất nhiều vì tôi có tiềm năng n! -1 bản sao nội dung được lưu trong bộ nhớ cache đơn giản vì các tham số chuỗi truy vấn đến theo thứ tự khác. Có cách nào tôi có thể đặt hàng chúng theo thứ tự bảng chữ cái trước khi thiết lập khóa bộ nhớ cache để tránh điều này? Có cách nào khác để giải quyết vấn đề này một cách thanh lịch không?
Vấn đề là có nhiều, nhiều cuộc gọi API có thể có với các tập hợp tham số riêng của họ. Một số người trong số họ là toàn cầu hơn như 'giới hạn', nhưng hầu hết trong số họ là phụ thuộc vào cuộc gọi API. Cảm ơn bạn đã nhúng liên kết Perl - Tôi sẽ kiểm tra điều đó trong khi chờ đợi các giải pháp khác. –