通過本身和朋友一塊兒探討,總結出三種方法實現。javascript
方法一:java
<script type="text/javascript"> $(function () { window.history.forward(1); }); </script>
在系統後臺頁面或者是模板頁加入該句腳本,使後退和前進相互抵消。緩存
方法二:服務器
<script type="text/javascript"> $(function () { $.post("/Account/isLogin", { random : Math.random() },function(data){ if (data != "True") { window.location.reload(); } }); }); </script>
在系統後臺頁面加入Ajax請求訪問服務器判斷用戶是否爲登陸狀態,若是不是刷新該頁框架
這種方法仍是有點美中不足,就是點擊後退的時候會閃現一下原先的頁面,並且還要多一個請求,浪費資源。dom
方法三:ide
public class NoCacheFilter : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Cache.SetNoStore(); } }
因爲我是使用MVC3框架定義以上過濾器,不啓用緩存設置post
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new NoCacheFilter()); }
全局的話能夠丟到Application_Start()程序啓動時GlobalFilters.Filters集合中。url
[NoCacheFilter] public class AccountController : Controller { [NoCacheFilter] public ActionResult LogOut() { Session["Users"] = null; Session["Department"] = null; Session.Clear(); Session.RemoveAll(); Cookie.ClearUserCookie(); Cookie.ClearUserCookie("url"); ClearCache(); return Redirect("/Account/Login"); } }
也能夠單獨對某個控制器使用或者某個動做使用。取決於你想要哪裏不緩存。spa
感謝個人夥伴波神與我一塊兒探討這個問題,最後我確實犯2了那麼鬼簡單搞那麼麻煩出來。