انتهاء صلاحية ذاكرة التخزين المؤقت الإخراج ASP.Net MVC

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

سؤال

أنا باستخدام معيار outputcache الوسم في MVC التطبيق الذي يعمل كبيرة ولكن أنا بحاجة إلى قوة أن تكون ملقاة في أوقات معينة.كيف يمكنني تحقيق ذلك ؟ الصفحة التي يحصل مؤقتا بنيت من بسيط جدا الطريق {المراقب}/{اسم الصفحة} - حتى أكثر الصفحات شيئا من هذا القبيل:/صفحة/About-Us

هنا هو الإخراج ذاكرة التخزين المؤقت الوسم الذي هو في الجزء العلوي من بلدي .aspx عرض الصفحة فقط أن تكون واضحة:

<@ OutputCache Duration="100" VaryByParam="None" %>

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

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

المحلول

كن حذرا حول استخدام "لا" مقابل"".

  • إذا قمت بإرسال "" ثم HttpHeader على تختلف هو لا إرسال.
  • إذا قمت بإرسال "لا شيء" ثم HttpHeader على تختلف هو إرسال.

اعتدت عازف الكمان للتحقق من هذا السلوك.

هذا يبدو أن يكون لها تأثير على ما إذا كان أو لم يكن المتصفح يذهب مرة أخرى إلى الخادم إلى التحقق من وجود أحدث إصدار (تسبب 304).على الأقل في كروم يفعل.تريد استخدامها Varies="" إذا كنت متأكد أنك لن ترغب في تحديث الملف قبل انتهاء صلاحيتها.

أنصح باستخدام Varies="" كما فعلت في هذا المنصب.بالنسبة لي ملف جافا سكريبت أنا لا أريد المتصفح العودة و صنع آخر طلب Http إلى أنها انتهت.304 غير ضرورية.

نصائح أخرى

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

وإلا، فما استقاموا لكم فاستقيموا تكرار خلال التخزين المؤقت الإخراج كامل وواضح تماما كل بند.

ولا يعرفون الفرق بين "لا" و "" لVaryByParam، كنت تستخدم هذه السمة:

[OutputCache(Location=OutputCacheLocation.ServerAndClient, Duration=int.MaxValue, VaryByParam="none")]

وهذا الرمز إلى "إصلاح" المشكلة Vary: *:

this.Response.Cache.SetOmitVaryStar(true);

والتي وجدت المشار إليها في ASP.NET اختبارات التخزين المؤقت تجد الخلل مع VaryByParam

<اقتباس فقرة>   

والفرق بين OutputCache   التوجيه تعيين "العميل" و   "ServerAndClient" هو أن   "ServerAndClient" مخرجات فاري   حقل. وهذا ما يؤثر IE في ذلك IE   ترسل طلبات بغض النظر.   استخدام تختلف: * رأس يمكن تعطيل   كل التخزين المؤقت عميل   ( http://msdn2.microsoft.com/en- لنا / مكتبة / system.web.httpcachepolicy.setomitvarystar.aspx ).

     

والطريقة الوحيدة لإزالة تختلف: * رأس وبالتالي تسمح كان التخزين المؤقت العميل من خلال كود:

ويبدو أن مخبأ الإخراج لا تضع أي شيء في HttpContent.Cache لأنني عندما حلقة من خلاله جمع فارغ:

For Each elem As DictionaryEntry In HttpContext.Cache
  HttpContext.Cache.Remove(elem.Key)
Next

وهنا هو بلدي سمة العمل:

<OutputCache(Duration:=600, VaryByParam:="pagename")> _
Function Index(ByVal pagename As String) As ActionResult
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top