Cách tốt nhất để xử lý người dùng quay lại trang đã lưu trữ các mục trong ứng dụng asp.net là gì? Có cách nào tốt để nắm bắt nút quay lại (sự kiện?) Và xử lý bộ nhớ cache theo cách đó?Cách tốt nhất để xử lý bộ nhớ cache và nút quay lại trình duyệt là gì?
Trả lời
Bạn có thể thử bằng cách sử dụng HttpResponse.Cache property nếu mà có thể giúp:
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"])
{
//...
}
Hoặc có thể có thể chặn bộ nhớ đệm của trang hoàn toàn với HttpResponse.CacheControl, nhưng nó được phản đối ủng hộ tài sản bộ nhớ cache trên:
Response.CacheControl = "No-Cache";
Edit: thực sự go nuts và OR bạn có thể làm tất cả bằng tay:
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
Cách tốt nhất để giải quyết vấn đề này là có thể đặt chỉ thị không có bộ nhớ cache trong các trang ASP.NET của bạn (hoặc trang chính nếu bạn đang sử dụng một trang). Tôi không nghĩ rằng có một cách để đối phó với điều này trực tiếp trong mã ASP.NET của bạn (kể từ khi quyết định bộ nhớ cache đang xảy ra trên máy khách).
Đối với MVC, không biết bạn sẽ thực hiện điều đó như thế nào (giả sử nó khác với ASP.NET dựa trên biểu mẫu web); Tôi đã không sử dụng nó.
Theo như tôi biết (hoặc ít nhất là đã đọc) là hết sức mình để cố gắng không làm việc để đáp ứng với sự kiện người dùng, nhưng thay vì nghĩ "trong trang" ..
Kiến trúc sư ứng dụng của bạn để nó doesn 't chăm sóc nếu nút quay lại được đẩy .. Nó sẽ chỉ đối phó với nó .. Điều này có thể có nghĩa là thêm một chút công việc từ một điểm phát triển của xem, nhưng tổng thể sẽ làm cho ứng dụng mạnh mẽ hơn rất nhiều ..
Tức là nếu bước 3 thực hiện một số chages dữ liệu, sau đó người dùng nhấp lại (để bước 2) và nhấp tiếp theo lần nữa, sau đó ứng dụng sẽ kiểm tra xem các thay đổi đã được thực hiện hay chưa. Hoặc lý tưởng, không thực hiện bất kỳ thay đổi nào cứng cho đến khi người dùng nhấp vào "OK" ở cuối .. Bằng cách này, tất cả các thay đổi được lưu trữ và bạn có thể điền lại biểu mẫu dựa trên các giá trị đã nhập trước đó khi tải, mỗi lần ..
Tôi hy vọng điều đó có ý nghĩa:)
-1 Một câu trả lời lý tưởng hơn là câu trả lời thực dụng. Một số ứng dụng đã được giải thích một cách cụ thể ngay từ đầu, khi làm việc trong một nhóm lớn với ngân sách eo hẹp, nó sẽ là một bán khá khó khăn để chìm tài nguyên vào việc thay đổi kiến trúc mà không có bất kỳ lợi ích rõ ràng nào cho các bên liên quan. Bên cạnh đó điều này không thực sự trả lời câu hỏi. –
RFC 2616 §13.13 nói rằng History và Cache là những thứ khác nhau. Chắc chắn không có cách nào để cache ảnh hưởng đến nút Back.
Nếu bất kỳ kết hợp tiêu đề HTTP nào ảnh hưởng đến nút Quay lại, đó là lỗi trong trình duyệt… với một ngoại lệ.
Trong HTTP S trình duyệt giải thích Cache-control: must-revalidate
làm yêu cầu làm mới trang khi nút Quay lại được sử dụng (Mozilla gọi nó là "chế độ ngân hàng ngớ ngẩn"). Điều này không được hỗ trợ trong HTTP thuần túy.
Các mã sau đây làm việc cho tôi trong IE9 +, FF21 và Chrome mới nhất:
Response.Cache.SetCacheability(HttpCacheability.NoCache | HttpCacheability.Private);
Response.Cache.AppendCacheExtension("must-revalidate");
Response.Cache.AppendCacheExtension("max-age=0");
Response.Cache.SetNoStore();
Bạn có thể đặt này trong Page_Load()
xử lý sự kiện trong MasterPage để mỗi trang trong ứng dụng của bạn yêu cầu khứ hồi đến máy chủ khi nhấn nút quay lại.
- 1. Trình duyệt nút quay lại GWT
- 2. Làm cách nào để xử lý tệp bộ nhớ cache?
- 3. Nút quay lại trình duyệt sau khi đăng xuất
- 4. Nút Quay lại (Hành vi Trình duyệt)
- 5. Chức năng bộ nhớ đệm của nút quay lại Opera
- 6. Cách tốt nhất để xóa bộ nhớ cache CSS của Plone là gì?
- 7. Làm thế nào để xóa bộ nhớ cache của trình duyệt trên nút quay lại trình duyệt nhấp vào trong MVC4?
- 8. CakePHP 2.1: Bộ nhớ cache của trình duyệt vs Xem bộ nhớ cache
- 9. Cách Viewflipper xử lý nút quay lại trong Android?
- 10. Cách xử lý nút Quay lại với trong hộp thoại?
- 11. Phương pháp tốt nhất để buộc hết hạn bộ nhớ cache trong ASP.NET là gì?
- 12. Thực hành tốt nhất cho danh sách và thiết lập xử lý trong Redis là gì?
- 13. ASP.net mô phỏng nút quay lại trình duyệt
- 14. Cách tốt nhất để xử lý nội dung của sysfs bằng C/C++ là gì?
- 15. ASP.NET - Vô hiệu hóa bộ nhớ cache của trình duyệt
- 16. Cách tốt nhất để xử lý chuyển đổi trình tự này trong Clojure là gì?
- 17. Cách biết nút làm mới hoặc nút quay lại trình duyệt được nhấp trong firefox
- 18. sự khác biệt giữa bộ nhớ cache l1 và bộ nhớ cache l2 là gì?
- 19. Xử lý phần cứng Android Nút quay lại
- 20. Lần truy cập bộ nhớ cache và bộ nhớ cache bị thiếu là gì? Tại sao ngữ cảnh chuyển đổi sẽ gây ra bộ nhớ cache bỏ lỡ?
- 21. Trình duyệt xử lý bộ nhớ đệm của các gói XAP như thế nào?
- 22. Trình tự xử lý bộ nhớ và GC trong C#
- 23. Bộ nhớ cache khởi động là gì?
- 24. Cách tốt nhất để xử lý quản lý thay đổi là gì?
- 25. Làm cách nào để mô phỏng nút quay lại của trình duyệt trong HtmlUnit?
- 26. Cách tốt nhất để xử lý KeyNotFoundException
- 27. Phát hiện bộ nhớ cache của trình duyệt theo jQuery
- 28. Cách tốt nhất để xử lý các kiểu dữ liệu phức tạp trong CakePHP là gì?
- 29. Chiến lược tốt nhất để xử lý các ngoại lệ và lỗi trong Rails là gì?
- 30. Yêu cầu AJAX trên bộ nhớ cache
Xem http: // stackoverflow.com/questions/20088616/browser-back-button-show-the-page-from-cache –