最近在使用ext.js開(kāi)發(fā)項(xiàng)目時(shí),遇到了一個(gè)問(wèn)題:有時(shí)候無(wú)法接收到j(luò)son數(shù)據(jù)。
經(jīng)過(guò)排查發(fā)現(xiàn),這個(gè)問(wèn)題主要是由于瀏覽器緩存引起的。當(dāng)我們向服務(wù)器請(qǐng)求數(shù)據(jù)時(shí),如果數(shù)據(jù)已經(jīng)被緩存過(guò),瀏覽器就很可能不會(huì)再向服務(wù)器發(fā)送請(qǐng)求,直接使用緩存的數(shù)據(jù)。
// 這是一段使用ajax請(qǐng)求數(shù)據(jù)的代碼 Ext.Ajax.request({ url: 'data.json', method: 'GET', success: function(response, opts) { // 成功接收到數(shù)據(jù)后的操作 }, failure: function(response, opts) { // 接收數(shù)據(jù)失敗后的操作 } });
我們可以通過(guò)以下幾種方式來(lái)解決這個(gè)問(wèn)題:
- 在請(qǐng)求數(shù)據(jù)時(shí)加上時(shí)間戳或隨機(jī)數(shù):在url中加上一個(gè)時(shí)間戳或隨機(jī)數(shù)參數(shù),可以避免數(shù)據(jù)被緩存,每次請(qǐng)求都會(huì)重新從服務(wù)器獲取數(shù)據(jù)。
- 在響應(yīng)頭中設(shè)置Cache-Control參數(shù):在服務(wù)器端設(shè)置響應(yīng)頭的Cache-Control參數(shù),可以告訴瀏覽器不要緩存數(shù)據(jù)。
- 使用POST請(qǐng)求:POST請(qǐng)求不會(huì)被緩存,每次請(qǐng)求都會(huì)重新從服務(wù)器獲取數(shù)據(jù)。
這些方法都可以解決ext.js無(wú)法接收json數(shù)據(jù)的問(wèn)題,具體使用哪種方法可以根據(jù)實(shí)際情況選擇。