處理用戶返回已經在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. XPage:處理瀏覽器後退按鈕
- 2. 什麼是存儲並單擊後退按鈕瀏覽器
- 3. 以多步形式處理瀏覽器後退按鈕
- 4. 如何處理後退按鈕IE和FF/Safari瀏覽器
- 5. 瀏覽器後退按鈕
- 6. 在硒中處理多個瀏覽器的最佳方式是什麼?
- 7. 在瀏覽器中處理流JS內容的最佳方式是什麼?
- 8. Iframe和瀏覽器後退按鈕
- 9. AJAX和瀏覽器後退按鈕
- 10. Jquery .toggle()和瀏覽器後退按鈕
- 11. 瀏覽器後退按鈕和javascript
- 12. 註銷和瀏覽器後退按鈕
- 13. 用jsonp處理瀏覽器的後退按鈕
- 14. 攔截/處理React-router中的瀏覽器後退按鈕?
- 15. 在React中處理來自瀏覽器的後退按鈕
- 16. 移動瀏覽器的後退按鈕事件處理
- 17. 如何處理動態內容的瀏覽器後退按鈕
- 18. 處理瀏覽器中的後退按鈕事件
- 19. 會話空後退按鈕瀏覽器緩存
- 20. Angularjs $ http請求緩存在瀏覽器後退按鈕
- 21. 在javascript中處理瀏覽器後退按鈕
- 22. 如何在春天處理瀏覽器後退按鈕mvc
- 23. 如何處理瀏覽器刷新,後退按鈕
- 24. 在html中替換文件瀏覽按鈕的最佳方式是什麼?
- 25. 註銷後瀏覽器後退按鈕
- 26. 什麼是跨瀏覽器最小高度的最佳和有效的方式?
- 27. 瀏覽器中的後退按鈕
- 28. 疼痛瀏覽器的後退按鈕
- 29. 瀏覽器的後退按鈕
- 30. 「後退按鈕」的最佳方法
請參閱http:// stackoverflow。com/questions/20088616/browser-back-button-showing-the-page-from-cache – 2015-02-11 23:06:08