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



Answers

يفتقد HackedByChinese هذه النقطة. كان مخطئا الخادم ذاكرة التخزين المؤقت مع ذاكرة التخزين المؤقت العميل. OutputCacheAttribute عناصر تحكم ذاكرة التخزين المؤقت (ذاكرة التخزين المؤقت http http) ، وليس ذاكرة التخزين المؤقت (أجهزة العملاء) المستعرضات.

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

[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
{
    // ... 
}

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

Question

كيفية تعطيل التخزين المؤقت للمستعرض التلقائي من تطبيق asp.Net mvc؟

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

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




إذا كنت تريد منع التخزين المؤقت للمتصفح ، يمكنك استخدام هذا الرمز من ShareFunction

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);
}



Links