2011-07-14 123 views
13

當用戶從我的移動應用程序註銷時,我如何確保清除緩存?jQuery在註銷時清除緩存

我在想的是重定向/註銷到清除緩存並重定向到首頁的特定頁面,但是如何清除緩存中的所有內容?

我正在使用jQuery Mobile 1.0b2pre。

+1

有趣的問題...... +1 – genesis

+0

更新:服務器端'緩存Control'等不會工作。我們需要JavaScript來做到這一點。 – webjay

+0

爲什麼它不能工作? – genesis

回答

6

這裏是我如何解決它:

/logout訴訟,但該用戶的會話在後臺破壞重定向到/exit其中有exitPage id屬性。 在我的JavaScript中,我已經要求jQuery Mobile在該頁面即將創建時觸發。然後我清空DOM並重定向到首頁。

/退出:

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

/my.js:

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

您無法清除緩存。但您可以根據自己的會話ID標識用戶,並在下次進入時將其附加到資源網址someimage.png?cachecontrol=blablalba,他將擁有新的會話ID,因此即使舊的還在緩存。另一種解決方案是將緩存控制頭部顯式設置爲no-cache。但您無法強制其瀏覽器清除緩存

+0

我並不擔心圖像等的緩存,只有頁面內容。像用戶設置頁面等 – webjay

+0

你可以添加緩存的東西不只是圖像。那只是一個例子。對於敏感頁面,您可以通過標題告訴瀏覽器它根本不應該緩存它。 – TheBrain

+0

我想將所有內容緩存起來。但是當用戶註銷時,頁面內容緩存應該被清除。 – webjay

0

要避免更改所有頁面的URL,您可以根據會話ID發送一個ETag標頭,並在會話中爲每個響應添加標籤。如果你還包括Cache-Control:must-revalidate,這應該可以做到。

+0

服務器端不會工作,因爲動態頁面已經使用'Cache-Control'。 jQuery Mobile緩存內容,我需要從jQuery Mobile的緩存中移除任何東西。 – webjay