2011-07-14 36 views
13

Khi người dùng đăng xuất khỏi ứng dụng di động của tôi, làm cách nào để đảm bảo bộ nhớ cache bị xóa?Bộ nhớ cache rõ ràng của jQuery khi đăng xuất

Điều tôi đang nghĩ đến là chuyển hướng/đăng xuất tới trang cụ thể xóa bộ nhớ cache và chuyển hướng đến trang đầu, nhưng làm cách nào để xóa mọi thứ khỏi bộ nhớ cache?

Tôi đang sử dụng jQuery Mobile 1.0b2pre.

+1

đẹp câu hỏi ... 1 – genesis

+0

Cập nhật: Server side 'Cache-Control' vv wont work. Chúng ta cần JavaScript để làm điều này. – webjay

+0

tại sao nó không hoạt động? – genesis

Trả lời

6

Đây là cách tôi giải quyết nó:

/logout hành động của tôi nơi phiên người dùng đang bị phá hủy trong backend chuyển hướng đến /exit trong đó có một thuộc tính id của exitPage. Trong JavaScript của tôi, tôi đã yêu cầu jQuery Mobile kích hoạt khi trang đó sắp được tạo. Sau đó tôi xóa DOM và chuyển hướng đến trang đầu.

/exit:

<div data-role="page" id="exitPage"></div> 

/my.js:

jQuery('#exitPage').live('pagebeforecreate', function(){ 
    jQuery(document).empty(); 
    window.location.replace('/'); 
}); 
1

bạn không thể xóa bộ nhớ cache. nhưng những gì bạn có thể làm là xác định người dùng dựa trên id phiên của mình và thêm vào url nội dung someimage.png?cachecontrol=blablalba vào lần tiếp theo, anh ấy sẽ có id phiên mới để anh ấy nhận tệp mới ngay cả khi tệp cũ vẫn ở trong bộ nhớ cache. giải pháp khác sẽ đặt rõ ràng tiêu đề điều khiển bộ nhớ cache thành no-cache. nhưng bạn không thể buộc trình duyệt xóa bộ nhớ cache

+0

Tôi không lo lắng về bộ nhớ đệm của hình ảnh, vv, chỉ nội dung trang. Giống như trang cài đặt người dùng, v.v. – webjay

+0

bạn có thể thêm bộ nhớ cache vào mọi thứ không chỉ là hình ảnh. Đó chỉ là một ví dụ. đối với các trang nhạy cảm, bạn có thể thông báo cho trình duyệt thông qua các tiêu đề không nên lưu vào bộ nhớ cache. – TheBrain

+0

Tôi muốn mọi thứ được lưu trong bộ nhớ cache. Nhưng khi người dùng đăng xuất, bộ nhớ cache nội dung trang sẽ bị xóa. – webjay

0

Để tránh thay đổi URL của tất cả các trang, bạn có thể gửi tiêu đề ETag với mỗi câu trả lời trong phiên dựa trên ID phiên. Nếu bạn cũng bao gồm Cache-Control:must-revalidate, điều này sẽ làm các trick.

+0

Phía máy chủ sẽ không hoạt động như các trang động đã sử dụng 'Cache-Control'. jQuery Mobile lưu trữ nội dung và tôi cần một cách để xóa mọi thứ khỏi bộ nhớ cache của jQuery Mobile. – webjay

Các vấn đề liên quan