ما هي أفضل طريقة لفرض انتهاء صلاحية ذاكرة التخزين المؤقت في ASP.NET؟

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

  •  22-08-2019
  •  | 
  •  

سؤال

لنفترض أن لدي تطبيق ASP.NET يعمل عبر عدة خوادم ويب خلف موازن التحميل:

هل استطيع:

  • هل يجب إجبار OutputCache (مستوى الصفحة و/أو التحكم) على الانتهاء عالميًا؟

  • فرض ذاكرة التخزين المؤقت للبيانات (أيCache.Insert) هل تنتهي صلاحيتها؟

  • مراقبة استخدام التخزين المؤقت لـ ASP.NET (المفاتيح، ذاكرة الوصول العشوائي، إلخ) من موقع مركزي؟

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

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

المحلول

هناك العديد من الطرق لجعل هذه التخزين المؤقت تنتهي صلاحيتها، مثل ذاكرة التخزين المؤقت للصفحة

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

التبعية المستندة إلى الوقت تؤدي ببساطة إلى انتهاء صلاحية العنصر في وقت محدد.

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.Cache.SetSlidingExpiration(true);

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

يمكنك بالطبع تعداد ذاكرة التخزين المؤقت وأزواج القيمة الرئيسية ثم حساب حجم كل عنصر مخزن.لا يبدو الأمر سهلاً أليس كذلك؟؟

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

وهنا شيء لعرض مفاتيح ذاكرة التخزين المؤقت الخاصة بك،

' display contents of the ASP.NET Cache
If Cache.Count > 0 Then    
  cc.Append("<b>Contents of the ASP.NET Cache (" _    
          & Cache.Count.ToString() & " items):</b><br />")    
  For Each item As Object In Cache    
    cc.Append("Key:'" & item.Key & "' Type:" _    
            & item.Value.GetType().ToString() & "<br />")    
  Next    
Else    
  cc.Append("<b>ASP.NET Cache is empty</b>")    
End If

نصائح أخرى

من نصائح تك (اقرأ الرابط للحصول على شرح مفصل)

Response.Expires = 15
Response.ExpiresAbsolute = Now() - 2
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "private"

http://msdn.microsoft.com/en-us/library/y18he7cw(v=vs.100).aspx

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top