jQuery Ajax IE無法正常運作?

今天公司要求說要做到類似GMAIL會自動更新畫面的功能,jQuery Ajax應用在FireFox通常都沒啥問題,但很多客戶仍然還是多數使用IE,今天就花點時間研究為何IE不能正常運作。

這篇http://stackoverflow.com/questions/425854/jquery-ajax-request-failing-in-ie有講怎樣解決問題,主要原因是IE的Cache預設是開啟的,需要隔一段時間才會遞出請求,而上述的作法其實也就是讓request的URL每次都不同,在變數內塞個時間參數。

var d = new Date()
$
.ajax({
url
:"{{SITE_URL}}/service.ashx?_="+d.getTime(),
...Snip...

但經我測試後還是沒效果,.因為它是一天更新一次,如果要做到類似GMAIL即時後端抓取資料的效果,就要改成....
var d = new Date()
$
.ajax({
url
:"{{SITE_URL}}/service.ashx?_="+d.toTimeString(),
...Snip...

每秒鐘就給它更新一次,這樣雖會正常顯示,但會把USER端的cache塞爆了的問題。

正確的作法是要關上IE的cache,我們可以在service.ashx 內寫上


Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write("ajax content test...");
Response.End();


這樣就算是IE6.0也會正常更新畫面了。