ما الفرق بين ذاكرة التخزين المؤقت HTTPruntime وذاكرة التخزين المؤقت HTTPCONTEXT؟

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

سؤال

أعلم أن هناك سؤال متشابه للغاية هنا لكنني كنت آمل أن أحصل على تفسير أفضل. لماذا أستخدم httpccontext.cache بدلا من ذلك بدلا من httpruntime.cache إذا كان httpcontext يستخدم حقا httpruntime.cache وراء الكواليس؟

في المقالة محاكاة خدمة Windows باستخدام ASP.NET لتشغيل الوظائف المجدولة يستخدم عمر HTTPCONTEXT لتخزين عناصر ذاكرة التخزين المؤقت، ولكن عندما نفذت جيف اتوود هنا اختار استخدام httpruntime بدلا من ذلك. من الواضح في هذه الحالة بالذات، فمن المنطقي لأنه لا يتعين عليك القيام بطلب ويب لإضافة عنصر ذاكرة التخزين المؤقت مرة أخرى إلى httpcontext.

ومع ذلك، أنا أبحث عن بعض المؤشرات الجيدة فيما يتعلق بموعد استخدام واحد مقابل الآخر.

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

المحلول

انها حقا هي نفس التخزين المؤقت في النهاية، فقط HttpContext.Current يمكن أن تكون في بعض الأحيان NULL (عندما لا تكون في سياق ويب، أو في سياق ويب ولكن لم يتم بناؤها بعد). كنت آمن للاستخدام دائما HttpRuntime.Cache.

نصائح أخرى

عندما تكون في صفحة ويب عادية، يمكنك استخدام بأمان HttpContext.Cache أو فقط Cache خاصية الصفحة.

إذا كنت تفعل شيئا ليس في صفحة، فغالبا ما تحتاج إلى استخدام HttpRuntime.Cache لإمكانية الوصول إليها بأمان.

في بعض الحالات، يمكنك معرفة ما إذا كان هناك سياق HTTP أم لا، على سبيل المثال إذا قمت ببدء تشغيل مؤشر ترابط منفصل من صفحة ويب، فإن هذا الخيط ليس لديه سياق HTTP. في حالات أخرى قد يكون لديك سياق HTTP في بعض الأحيان، مثل في Application_Start طريقة في global.asax, ، كما قد لا يبدأ الطلب دائما لأن هناك طلب.

أجد أنه مضلل أيضا على الرغم من أننا جميعا نعلم الجميع فقط HttpRuntime.Cache داخليا. أيضا httpruntime هو نوع من الخيار السيئ لفضح ذاكرة التخزين المؤقت التي أعتقدها.

الجميع sais كيف Session هو ذاكرة التخزين المؤقت على مستوى الجلسة والذاكرة التخزين المؤقت نتحدث عن مستوى التطبيق. أفضل أن يكون لديك Application.Cache كما ذاكرة التخزين المؤقت نحن نستخدمها اليوم و HttpContext.Cache للإشارة إلى ما هو معروف باسم HttpContext.Items.

أما بالنسبة للإجابة على سؤالك، أعتقد أننا يجب أن نلتزم جميعا بعملية httpruntime.cache جعل رمزنا أكثر وضوحا حتى إذا كان لدينا طرق مختلفة للوصول إليها. وعندما تخطط بجدية لاستخدامها، من الأفضل لف واجهة برمجة التطبيقات الخاصة بك وكنت نسميها داخليا HttpRuntime's أو أي تنفيذ ذاكرة التخزين المؤقت الأخرى (Entlib، السرعة، إلخ ...).

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