سؤال

هل من الممكن مسح ذاكرة التخزين المؤقت للإخراج لأحد تطبيقات الويب asp.net من داخل تطبيق ويب asp.net آخر؟

السبب هو...لدينا العديد من تطبيقات الويب المهيكلة مثل...

يتم تخزين الصفحات الموجودة في /area1/ و/area2/ مؤقتًا وتتم إدارتها من خلال /intranet/cms/.عندما يتم تحرير صفحة باستخدام /intranet/cms/، أريد مسحها من ذاكرة التخزين المؤقت في التطبيق /area#/ المناسب.

لقد حاولت بالفعل استخدام VaryByCustom الذي يبحث عن دليل مخزن في HttpContext.Cache ولكن يبدو أنه تم تخزينه مؤقتًا لكل تطبيق ويب، وهذا لا يعمل.

حقًا، إذا كانت هناك أي طريقة لتمرير البيانات بين تطبيقات الويب على خادم واحد، فهذا من شأنه أن يحل مشكلتي، حيث يمكنني استخدام ذلك + VaryByCustom.

شكرًا!

-مايك توماس

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

المحلول

الطريقة التي قمت بها في الماضي هي الحصول على صفحة "مخفية" (في كل صفحة من صفحات /areaX المواقع) التي تقوم بالمسح، وإعادة التحميل، وما إلى ذلك.تتحقق الصفحة من صحة معلمة استعلام سري مشترك قبل القيام بأي شيء (لتجنب هجمات حجب الخدمة).إذا كانت الصفحة صالحة، فستخرج رسالة "موافق" بمجرد اكتمال العملية؛يولد خطأ 404 إذا كان السر غير صالح.

إذا كنت تريد أن يكون التدفق على أساس كل عنصر أو كل مجموعة، فقم بإضافة معلمة ثانية تحدد هذا العنصر/المجموعة.

تعد هذه الطريقة أيضًا مستقلة عن تكنولوجيا الخادم، ويمكن تشغيلها بواسطة أدوات إدارة أخرى إذا لزم الأمر.

نصائح أخرى

إحدى الطرق التي أعرفها للقيام بذلك هي استخدام مورد مشترك باعتباره تبعية، وعادةً ما يكون ملفًا.عند تغيير الملف، يتم مسح ذاكرة التخزين المؤقت.أعتقد أنه يمكنك استخدامها HttpResponse.AddFileDependency لهذا.

ومع ذلك، في هذه الحالات، يكون من الأفضل عادةً استخدام ذاكرة تخزين مؤقت خارج العملية مثل com.memcached.لم أختبره بنفسي، ولكن هذا وصلة يتعامل مع استخدام memcached مع OutputCache.

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