2011-04-14 135 views
3

我正在處理用戶數據,並且無法允許它被緩存。如何防止JavaScript書寫的內容被存儲在Firefox的wyciwyg緩存中?

我正在使用Firefox 4和Tomcat 6服務器進行測試,並將緩存控制設置爲no-cache,no-store,private,must-revalidate,max-age = 0。我還設置了expires標題。

但是Firefox仍然在緩存中生成一個wyciwyg文件(你是什麼緩存)。這可能被認爲是歷史機制而不是緩存機制。但它仍然存儲用戶數據。

一個例子是http://www.w3schools.com/Ajax/ajax_example.asp。 在Firefox 4.0中,about:cache(特別是about:cache?device = disk)頁面顯示wyciwyg://文件,並且在「無過期時間」中設置過期日期。更糟糕的是,瀏覽器關閉並重新啓動後,緩存仍然存在。

經過調查,對我來說,wyciwyg是由document.write()javascript調用的內容生成的。

它如何防止Firefox緩存?理想情況下,不改變document.write()?

回答

2

您是否使用Firebug檢查緩存頭是否真的發送給瀏覽器?

但是,在任何情況下,都有一個簡單的解決方案來防止緩存:將時間戳參數添加到請求URL。

url = '/my/ajax/script?_=' + new Date().getTime(); 

這個技巧也被許多JS庫所使用。如果您使用的是jQuery,只需將cache: false傳遞給AJAX請求選項即可。

+1

Firebug顯示緩存標題。這可以防止實際的html文件被緩存。我現在關心的部分是由document.write()寫的內容。 例如,document.write(「個人信息」);會創建一個wyciwyg://文件,其中包含「人員信息」。 – user518502 2011-04-14 05:10:38

+0

爲什麼你需要防止緩存呢?是它首先寫入緩存的問題,還是不正確地從緩存中加載過時的數據? – intgr 2011-04-14 08:45:19

+0

問題是它寫入緩存。瀏覽器不會在我的設計中加載陳舊的數據。但我不覺得有個人數據保持在客戶端本地機器瀏覽器緩存。 – user518502 2011-04-14 16:24:35