2010-05-23 65 views
5

我有一種情況,我的頁面從數據庫加載一些信息,然後通過AJAX進行修改。使用ajax修改頁面時出現問題,瀏覽器將未修改的頁面保留在緩存中

我點擊一個鏈接到另一個頁面,然後使用'返回'按鈕返回到原始頁面。

由於瀏覽器在緩存中存儲了未更改的頁面,因此我之前所做的通過AJAX進行的頁面更改未出現。

有沒有辦法解決這個問題,而不是設置頁面不要緩存?

謝謝:)

回答

1

試想一下,每個請求到服務器的信息,包括初始頁面加載且每個AJAX請求,是不同的實體。每一個都可以或不可以緩存在服務器和瀏覽器之間的任何地方。

您正在修改向服務器提供任意請求和動態DOM操作的初始頁面(在大多數情況下由瀏覽器緩存)。瀏覽器必須能夠跟蹤這些變化。

您將不得不維護狀態,也許使用cookie來重建頁面。事實上,在我看來,一個動態生成的文檔,你可能希望移動和移出應該肯定有一個工作流定義,持續和檢索它的狀態。

也許用發送給服務器的密鑰爲每個操縱元素設置一個cookie來獲取數據?

+0

那麼,你的意思是將每個變化存儲在一個cookie中的頁面元素,並使用JS重新加載這些更改,如果頁面返回? – 2010-05-23 04:55:02

+0

@David如果你設計你的代碼的方式是一個特定的輸入產生一個特定的輸出,你可以簡單地存儲這些密鑰。例如 - 用戶正在查看一個很好的格式化列表或網格,其中包含一系列關於多個房地產屬性的詳細信息。用戶花時間編譯這個信息列表,所以丟失它可能會降低您的網站的價值。編寫你的代碼,以便你可以只使用列表的主鍵一次構建一個項目。然後,無論何時列表被修改,您只需在cookie中保存一個[233,2235,25235,23] – 2010-05-23 05:08:31

+0

的密鑰列表,並且只要您的腳本加載,就檢查該cookie。如果它存在,那麼你知道你應該通過調用服務器並檢索並顯示列表中每個項目的數據來重建列表。那有意義嗎?我可能會做更多的努力,但是你的代碼會更聰明,從長遠來看,你會做更多的事情。實際上有很多ajax控件,比如jquery插件,它們已經能夠使用cookie來維護狀態。大多數任何價值爲鹽的網格都可以使用我剛剛描述的策略在頁面週期中存活下來。無論如何 - 祝你好運。 – 2010-05-23 05:11:56

相關問題