背景
近期快取問題頻頻出現,嚴重影響了軟體的正常使用,還經常性地造成資料異常,直接影響客戶對我們軟體穩定性、安全性的不信任。雖然現在已經在業務控制上加了約束控制,可以說不會再出現業務資料異常問題,但是快取的效果給客戶還會帶來不好的感受,也就影響了財政綜合業務系統的整體水平。
客戶端快取
1. 帶來的問題
日期
模組
問題描述
2006.7
國庫支付系統-授權支付憑證錄入
授權憑證錄入時取資金使用情況儲存在頁面,如果出現快取問題,資金使用情況取得永遠是快取物件裡的,導致不能根據實際的資金使用情況控制授權憑證可使用的金額,因此部分單位發生超出可用額度的情況。
2006.12
國庫支付系統-直接支付憑證作廢
在直接支付的已錄入頁面如果存在快取,就可以看得到已經進入下乙個流程的資料,比如銀行已確認,已經支付完成等。在我們系統看得到的資料就是可以操作的,所以直接支付憑證發生支付完成後還可以被作廢。
2007.1
國庫支付系統-授權支付憑證修改
在授權憑證的已錄入頁面如果存在快取,就可以看得到已經進入下乙個流程的資料,比如銀行確認,已經支付完成等。在我門的系統能看到的資料就是可以操作的,所以授權憑證發生支付後還可以修改。
通過以上**很清楚的反應了快取所帶來的問題,雖然現在已經在程式上做了必要的業務邏輯判斷,但是始終沒用解決快取的根本問題,如果程式存在沒有判斷好的情況,也就還會有出現資料上的問題危險。然而,快取的存在始終對使用者有一種不好的感覺,如果進入程式以後還可以看到以前操作過的資料,對使用者來說會產生誤解,也就影響了使用者對系統的評價。
2. 前期解決方法
前期的解決方發如下: 在
web-info/jsp/common/meta.jsp
裡設定meta
的資訊
< meta http-equiv="expires" content="0"/> 在
web-info/jsp/common/ innerhead.jsp
裡設定請求頭資訊
< !--
清除客戶端快取
-->
< %
response.setheader("pragma","no-cache");
response.setheader("cache-control","no-cache");
response.setdateheader("expires", 0);
% >
3. 建議解決方法
修改系統所有業務相關的鏈結位址,在鏈結位址後面自動加個隨機數作為鏈結位址的引數,這樣就能保證每個鏈結不會跟以前訪問位址重複,也就不會產生
ie讀取臨時檔案的問題。
修改的位址不能為系統所有的鏈結位址,只修改相關有業務操作的頁面位址,保證業務資料不會出現快取問題。也就是說只要修改列表顯示業務資料的鏈結位址,其它的可以不要修改。比如:在國庫支付系統的已錄入頁面的位址。
對於隨機數的取數方法由資料中心統一提供。
客戶端快取解決方案
背景 近期快取問題頻頻出現,嚴重影響了軟體的正常使用,還經常性地造成資料異常,直接影響客戶對我們軟體穩定性 安全性的不信任。雖然現在已經在業務控制上加了約束控制,可以說不會再出現業務資料異常問題,但是快取的效果給客戶還會帶來不好的感受,也就影響了財政綜合業務系統的整體水平。客戶端快取 1.帶來的問題...
客戶端快取
你的 在併發訪問很大並且無法承受壓力的情況下,你會選擇如何優化?很 多人首先會想從伺服器快取方面著手對程式進行優化,許多不同的伺服器快取方式都有他們自己的特點,像我曾經參與的一些專案中,根據快取的命中率不同使用過 com enterprise libiary caching windows服務,靜態...
解決客戶端快取的問題
快取分為服務端快取和客戶端快取,服務端快取一般都是讓運維去清理一下快取,剩下來的快取就需要前端或者前端和後台協同解決了。瀏覽器的快取真的是讓人又愛又恨,他可以幫助我們加快頁面響應速度,同時也會帶來開發中的困難。當瀏覽器讀取相同的檔名時,瀏覽器會去讀取快取中的檔案,而不是從服務端讀取檔案,這樣就造成了...