ASP.NET مفك كيفية تعطيل خيار التخزين المؤقت التلقائي؟


Answers

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

أعطيك جزء صغير جدا من بلدي كودباس. استخدامه بحكمة.

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public sealed class NoCacheAttribute : FilterAttribute, IResultFilter
{
    public void OnResultExecuting(ResultExecutingContext filterContext)
    {
    }

    public void OnResultExecuted(ResultExecutedContext filterContext)
    {
        var cache = filterContext.HttpContext.Response.Cache;
        cache.SetCacheability(HttpCacheability.NoCache);
        cache.SetRevalidation(HttpCacheRevalidation.ProxyCaches);
        cache.SetExpires(DateTime.Now.AddYears(-5));
        cache.AppendCacheExtension("private");
        cache.AppendCacheExtension("no-cache=Set-Cookie");
        cache.SetProxyMaxAge(TimeSpan.Zero);
    }
}

الاستعمال:

/// will be applied to all actions in MyController
[NoCache]
public class MyController : Controller
{
    // ... 
}

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

Question

كيفية تعطيل التخزين المؤقت للمتصفح التلقائي من تطبيق asp.Net مفك؟

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

حتى بعض واحد يعرف كيفية تعطيل خيار التخزين المؤقت يدويا من ASP.NET مفك 4؟




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

public override void OnResultExecuting(ResultExecutingContext filterContext)
{
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
        filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();

        base.OnResultExecuting(filterContext);
}