هل يمكنني استخدام سيطرة "OutputCache" ASP.NET إلى صور ذاكرة التخزين المؤقت دون ضربة الأداء؟

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

  •  20-08-2019
  •  | 
  •  

سؤال

ولدي بعض الإجراءات ASP.NET MVC التي تولد الصور حيوي (على الرغم من أنها يمكن أن تكون على قدم المساواة صفحة ASPX).

وأنا باستخدام [OutputCache] إلى ذاكرة التخزين المؤقت هذه الصور. أنا فقط أتساءل عما اذا كان داعي للقلق حول ASP.NET التخزين المؤقت الصور في الذاكرة وتناول الكثير من الموارد. هذه هي صور المنتجات ذات أحجام مختلفة لعربة التسوق لا يحتوي إلا على بضع عشرات المنتجات.

هل OutputCache استخدام القرص أو فقط في الذاكرة؟ كيف ذكي هو؟ أو ينبغي أن مجرد حفظ الصور على القرص نفسي وتنفيذ نظام بلدي التخزين المؤقت الخاصة (الذي هو في الواقع تنفيذ الحالي)؟

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

المحلول

لجميع المقاصد والأغراض، وأعتقد أن ذاكرة التخزين المؤقت الإخراج هو تماما في الذاكرة - وهذا يعني أنه إذا تم إعادة تدويرها بركة التطبيق، سوف تحتاج الصورة إلى أن تتولد من جديد

.

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

وبقدر ما "الكثير من الذاكرة"، إذا كنت تستخدم صراحة HttpContext.Cache بدلا من [OutputCache]، يمكنك التحكم في الأولوية في هذا البند في ذاكرة التخزين المؤقت. يمكنك ثم قرص الإعدادات على تجمع التطبيق للسيطرة على مقدار الذاكرة ويستخدم عموما، ولكن لست متأكدا من أن هناك الكثير كله ينبغي القيام به بخلاف ذلك. A الصور زوجين * 12 المنتجات لا يبدو ان الامر سيستغرق ما يصل مجموعة كبيرة من الذاكرة بالنسبة لي على الرغم من.

ودون معرفة أي شيء آخر عن التطبيق الخاص بك، فإنه يبدو لي ان كنت قد تفلت من العقاب فقط باستخدام outputcache. ومع ذلك، إذا كنت بحاجة إلى شيء أكثر قوة وقابلة للتطوير، ويهمني ان استخدام نظام ثنائي وصفت. رغم ذلك، إذا كنت قد حصلت بالفعل أن تنفذ والعمل، "إذا لم يتم كسر ..."

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