REST API التخزين المؤقت ، هل يجب علي استخدام وكيل عكسي أو memcache (D)؟

StackOverflow https://stackoverflow.com/questions/3636116

سؤال

لدي API REST حيث أرغب في تخزين استجابة JSON من الفهرس (GET /FOO) وإجراءات القراءة (GET /FOO /1) لزيادة الأداء بشكل كبير. عندما يكون هناك منشور أو وضع على مورد ، يجب انتهاء صلاحية إدخالات ذاكرة التخزين المؤقت للفهرس وقراءة النتائج ، لذلك لا يتم تقديم محتوى قديم.

هل هذا سيناريو يتم إنجازه بشكل أفضل مع وكيل عكسي مثل الحبار / الورنيش أم أنك ستختار Memcache (D)؟

هل كانت مفيدة؟

المحلول

باستخدام وكيل عكسي يجلس على طبقة HTTP أكثر شفاف. هذا يعني أنه من الممكن رؤية ما يجري على السلك. الشيء السيئ هو أن القليل من هذه الدعم التخزين المؤقت للاستجابات المصادقة, ، لذلك قد تنخفض كفاءتها إلى 0 إذا كانت مواردك تتطلب المصادقة. الوكلاء العكسيين أيضًا لا تنتهي صلاحية المورد تلقائيًا (/foo) عندما يكون هذا المورد غير ذي صلة تمامًا ب (/foo/1) تم تعديله. هذا سلوك صحيح يجب عليك إضافته إلى الحل الخاص بك بطريقة أو بأخرى.

يمكن حل كل من هذه المشكلات إذا كنت تستخدم memcached ، لأنه لا يوجد لديه متطلبات الشفافية.

نصائح أخرى

أود أن أذهب إلى وكيل عكسي مثل الورنيش لأنه يمكنك تنفيذ (واختبار) خدمتك دون إشراك منطق ذاكرة التخزين المؤقت ، وإضافة التخزين المؤقت كطبقة منفصلة. يمكنك ترقية/إعادة تشغيل خدمتك بينما يقدم Varnish نتائج قديمة للحصول على طلب (رائع للتوافر) ، ومن السهل إعداد القواعد في الورنيش (تطهير) نتائج ذاكرة التخزين المؤقت الحالية بناءً على إجراءات الحصول على/بعد محددة.

إذا كنت ترغب في استخدام Memcached الذاكرة الموزعة هو حل جيد. https://github.com/cpatni/middleman هو وكيل عكسي يستخدم memcached لتخزين التخزين المؤقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top