处理用户返回已经在asp.net应用中缓存项目的页面的最佳方式是什么?有没有一种很好的方法来捕获后退按钮(事件?)并以这种方式处理缓存?处理缓存和浏览器后退按钮的最佳方式是什么?
回答
您可以尝试使用HttpResponse.Cache property是否会有所帮助:
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";
编辑:或者你可以真正go nuts和做这一切的手:
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
对付它的最好的办法是可能提出你的ASP.NET页面no-cache指令(或母版页,如果你正在使用一个)。我不认为有一种方法可以直接在ASP.NET代码中处理这个问题(因为缓存决策发生在客户端上)。对于MVC,不知道你会如何实现这一点(假设它不同于基于Web窗体的ASP.NET);而对于MVC,不知道如何实现它(假设它不同于基于Web窗体的ASP.NET);对于MVC,不知道如何实现它(假设它不同于基于Web窗体的ASP.NET)。我没有用过它。
据我知道(或者至少已经阅读)是其最好尽量不响应用户事件工作,而是认为“页面” ..
架构师应用程序,以便它不“不在乎如果后退按钮被按下。它只会处理它。这可能意味着从发展的眼光来看一些额外的工作,但总体将使应用程序有很多更强大的..
即如果第3步执行一些数据chages,然后用户点击回到(第2步),然后再次点击下一步,然后应用程序检查是否已做出更改。或者理想情况下,它没有任何硬更改直到用户点击“确定”结束..这样,所有的变化都存储,你可以重新填写表格,基于之前输入的值在加载时,每次...
我希望这是有道理的: )
-1更多的是比实用的理想答案。一些应用程序从一开始就被设计成一种特殊的方式,当在一个预算紧张的大型团队中工作时,将资源沉浸到改变架构中并不会给业务利益相关者带来任何明显的收益。此外,这不是真的回答这个问题。 – 2015-02-11 23:07:51
RFC 2616 §13.13说历史记录和缓存是不同的东西。应该绝对没有办法让缓存影响后退按钮。
如果HTTP标头的任何组合影响后退按钮,这是浏览器中的一个错误......只有一个例外。
在HTTP中S浏览器将Cache-control: must-revalidate
解释为使用“后退”按钮时刷新页面的请求(Mozilla称之为“傻银行模式”)。这在纯HTTP中不受支持。
下面的代码在IE9 +,FF21和最新的Chrome为我工作:
Response.Cache.SetCacheability(HttpCacheability.NoCache | HttpCacheability.Private);
Response.Cache.AppendCacheExtension("must-revalidate");
Response.Cache.AppendCacheExtension("max-age=0");
Response.Cache.SetNoStore();
您可以在母版Page_Load()
事件处理程序,以便在您的应用程序的每个页面需要往返的地方这服务器时按下后退按钮。
- 1. 什么是存储并单击后退按钮浏览器
- 2. 以多步形式处理浏览器后退按钮
- 3. 浏览器后退按钮
- 4. 如何处理后退按钮IE和FF/Safari浏览器
- 5. 在浏览器中处理流JS内容的最佳方式是什么?
- 6. 在硒中处理多个浏览器的最佳方式是什么?
- 7. Jquery .toggle()和浏览器后退按钮
- 8. Iframe和浏览器后退按钮
- 9. AJAX和浏览器后退按钮
- 10. 浏览器后退按钮和javascript
- 11. 移动浏览器的后退按钮事件处理
- 12. 拦截/处理React-router中的浏览器后退按钮?
- 13. 用jsonp处理浏览器的后退按钮
- 14. 在React中处理来自浏览器的后退按钮
- 15. 处理浏览器中的后退按钮事件
- 16. Angularjs $ http请求缓存在浏览器后退按钮
- 17. 在javascript中处理浏览器后退按钮
- 18. 如何在春天处理浏览器后退按钮mvc
- 19. 在html中替换文件浏览按钮的最佳方式是什么?
- 20. 疼痛浏览器的后退按钮
- 21. 浏览器中的后退按钮
- 22. 什么是跨浏览器最小高度的最佳和有效的方式?
- 23. “后退按钮”的最佳方法
- 24. 按下浏览器后退按钮后出现模式
- 25. Gmail - 后退按钮点击浏览器
- 26. ASP向导浏览器后退按钮
- 27. 浏览器后退按钮/ #one #two等
- 28. 浏览器后退按钮asp.net
- 29. 后退按钮(浏览器行为)
- 30. CORS浏览器后退按钮错误
请参阅http:// stackoverflow。com/questions/20088616/browser-back-button-showing-the-page-from-cache – 2015-02-11 23:06:08