处理用户返回到在asp.net应用程序中缓存项目的页面的最佳方法是什么?有没有一种很好的方法来捕获后退按钮(事件?)并以这种方式处理缓存?
您可以尝试使用HttpResponse.Cache属性,如果这将有所帮助:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(false); Response.Cache.VaryByParams["Category"] = true; if (Response.Cache.VaryByParams["Category"]) { //... }
或者可以使用HttpResponse.CacheControl完全阻止页面的缓存,但是它已被弃用,而不是上面的Cache属性:
Response.CacheControl = "No-Cache";
编辑:或者你真的可以疯了,手工完成:
Response.ClearHeaders(); Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1 Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1 Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1 Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1 Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1 Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1 Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1
据我所知(或至少已阅读),最好不要回应用户事件,而是想"在页面中"..
构建你的应用程序,因此它不关心是否按下后退按钮..它只会处理它.从开发的角度来看,这可能意味着一些额外的工作,但整体上将使应用程序更加健壮. .
即如果步骤3执行一些数据chages,然后用户单击返回(到步骤2)并再次单击下一步,然后应用程序检查是否已进行更改..或者理想情况下,它不会进行任何硬更改,直到用户最后单击"确定".这样,所有更改都会被存储,您可以根据以前输入的值在每次加载时重新填充表单.
我希望这是有道理的 :)