ما الفرق بين ذاكرة التخزين المؤقت HTTPruntime وذاكرة التخزين المؤقت HTTPCONTEXT؟
-
12-09-2019 - |
سؤال
أعلم أن هناك سؤال متشابه للغاية هنا لكنني كنت آمل أن أحصل على تفسير أفضل. لماذا أستخدم 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، السرعة، إلخ ...).