2010年8月18日 星期三

Modal Dialog Cache問題

目前網站裡有幾個地方使用了Modal Dialog的設計,一種另開新視窗,並強制取得焦點,要把視窗關掉後才能回到原本的視窗繼續作業。
這種方式可以強制使用者做完一定的操作才能繼續下一步的作業。
不過今天有個使用者反應了一個問題...

發生問題的網頁是一個同時可以設定片語和使用片語功能的網頁。
使用者反映說,他設定完一個片語後,在填寫另一張表單時,叫出來的網頁沒有剛剛他設定的片語
review過程式,確定不是程式問題後,首先想到是吃到cache了,於是做了個簡單的測試
將IE設定為「每次造訪網頁時都檢查是否有新版本
依照使用者的操作方式試了幾次,都可以抓到新的資料,於是判定是cache的問題
最快的作法是請user改設定,不過想也知道這是不可能的事情...
於是打開aspx,加入這行
Response.Cache.SetCacheability(HttpCacheability.NoCache);
理論上這樣就不會吃到cache,但幾次測試下來,發現有時候還是會吃到cache...
好吧,去google,然後第一篇就是黑暗大的文章--KB-Modal Dialog Mini FAQ
用了文章裡教的方法::在網址後面加上亂數
"a.aspx?rnd=" + Math.random()
就解決了!!