近在IE瀏覽器下調試一個項目,這個項目裏面包含onmouseover時用到ajax的異步請求,當咱們第一次加載頁面鼠標移動到一個連接時能夠成功的觸發屬性。不過在當咱們把鼠標重新移動到另外一個連接觸發onmouseover時就會顯示出錯,不是新觸發的連接,IE瀏覽器左下的狀態欄依然顯示的仍是第一次onmouseover觸發時候鏈接。ajax
遇到這個狀況奇怪,覺得是本身的ajax有錯誤,後來去查閱了一些相關的資料才知道是IE緩存在的問題,由於第一次請求過,再請求仍是一樣的url,這個頁面已經被IE緩存了, 因此沒有再次觸發其餘的異步頁面。從這裏咱們就能夠看出IE瀏覽器下打開的網頁js代碼中,若是對同一個地址進行重複提交,而且參數不發生變化的狀況下,ie6-ie7都會將緩存中的數據返回給客戶端。雖然這樣節省了重新執行頁面的時間,可是在某些項目中數據須要實時更新的狀況下就成爲一個bug了,爲了解決ie瀏覽器的這個怪癖,固然也保證在其它瀏覽器下能夠正常的顯示,咱們能夠在提交請求的時候給請求參數添加一個隨機的參數,這樣就保證請求的參數的不重複,ie不直接讀取緩存的問題了。瀏覽器
具體的解決方法以下:緩存
在url中的參數中加入隨機數,使得每次請求的頁面的url都不一樣,dom
這樣就能夠避免IE瀏覽器直接讀取以前的緩存。異步
url = url + "&num="+Math.round(Math.random()*10000);網站
AJAX確實很是的好用,可以爲咱們在作項目的時候提供更多便捷和效果,但感受有時候爲了考慮PV和用戶體驗上咱們不得不作一些犧牲。url
這裏我有一個疑問就是不知道AJAX在異步請求的頁面是包含在網站上面的,alexa會算上這個是網站的有效PV嗎?.net
最後,假如你們在之後還遇到相似狀況你們得須要多動腦筋了。這是我又一次在這個問題上短路。讓我聯想到之前的相似問題。雖然IE瀏覽器留給咱們一些問題,但每個問題對於咱們都是一個考驗。調試