前段時間開發一個Java Web小項目,采用的是mvc模式,視圖層為Html,Ajax使用的多一些,后臺數據庫ORM用的是Hibernate。才后期做測試時,發現html多次請求時,頁面出現了數據不一致的現象。發現一個規律就是每個第五次請求數據就會出現舊數據或新數據。處理該問題有兩個思路。
**清理Ajax緩存**處理Hibernate緩存網上方法很多,這里直接給出。 解決Ajax緩存問題的方法
1、在ajax發送請求前加上 xmlHttPRequest.setRequestHeader(“Cache-Control”,”no-cache”); 2、在服務端加 header(“Cache-Control: no-cache, must-revalidate”); 3、在 Ajax 的 URL 參數后加上 “?fresh=” + Math.random(); //當然這里參數 fresh 可以任意取了 4、第五種方法和第四種類似,在 URL 參數后加上 “?timestamp=” + new Date().getTime(); 5、jQuery提供一個防止ajax使用緩存的方法:
$.ajaxSetup ({ cache: false //close AJAX cache });6、設置html的緩存 META HTTP-EQUIV=”Pragma” CONTENT=”no-cache”> META HTTP-EQUIV=”Cache-Control” CONTENT=”no-cache”> META HTTP-EQUIV=”Expires” CONTENT=”0”>
如果上面的方法你用了過后,數據還是存在不一致的現象。那么多半是后臺數據的問題了,您可以在數據出處寫個將請求的數據個數寫入指定的TXT文件,看看結果便知。
處理hibernate緩存問題網上方法很多,各種詳細介紹也有。 1 _session.flush(); _session.clear(); 這種方法我用了,沒有啥穩定的效果,也就是剛開始沒問題,后面還是會出現問題,還是會出現少數的不一致現象。 2 closeSession(); 這是我采用的方式,就是將session關閉就可以了。每一次數據庫增刪改查時,開啟session,然后記著關閉session就可以了。
hibernate的二級緩存這里就不說了,它默認不用的。
這是我的CSDN處女文章,僅供遇到同樣問題的朋友交流學習。 大神也可以吐槽和指點。
新聞熱點
疑難解答