2011-06-09 136 views
4

進我創建了查詢的一些現場數據的數據庫,然後返回一個JSONP(或最後一個JSONP樣)的Content-Type application/json; charset=utf-8如何防止.NET JSON被緩存

飼料這裏簡單的.aspx頁面是輸出的格式,或多或少:

jsonp1307643489579([ 
    ["12345","Text Here","99999","More Text Here","True","False","7/31","1"...], 
    ["12345","Text Here","99999","More Text There",...] 
] 

然後是一個jQuery .getJSON電話:

var url = "myURL.aspx?id=123&callBack=?"; 
$.getJSON(url, null, function(msg) { etc etc. 

這一切工作正常,除了以下。在我的開發環境和本地服務器上,每次新鮮數據都會現場返回。但在生產Web服務器上,數據固執地緩存,直到我回收IIS應用程序池(!)

有些事情我嘗試過沒有成功。

1/cache:false在ajaxSetup中不起作用。

2關閉web.config中的輸出緩存。

2a/OutputCache Location =「None」在aspx頁面聲明中沒有這樣做。

3 /向.getJSON(url)調用添加隨機唯一查詢字符串數據。看到我們如何爲每個呼叫添加一個唯一的回調參數,我想這已經發生了。

任何想法爲什麼我的Web服務器持有這些緩存的應用程序/ JSON文件?

編輯:我正在查看實際.aspx飼料,因爲他們從Web服務器下來,他們被緩存在那裏。所以據我的理解,這是一個Web服務器緩存問題,不一定是JQUERY緩存問題。

回答

0

原來,它的確是在.aspx服務器頁面緩存中的數據。對於所有關注客戶端AJAX的東西,我忽略了這些顯而易見的東西。

因此,我在服務器端添加了一系列預防措施(Response.ExpiresAbsolute等),並完成了這項工作。

+0

回答你自己的問題是完全可以接受的。如果你找到自己的答案,其他人可以從你發現的東西中受益。如果您認爲自己發現了一些難以正常發現或不在正常的東西,甚至可以發佈問題*以回答自己的問題。 – 2011-09-11 19:39:22

+1

請你詳細解釋一下嗎?一個迴應告訴我你做了「等等」並沒有真正的幫助 – spankmaster79 2015-03-02 13:09:02

10

在進行任何getJSON電話,使用此:

jQuery.ajaxSetup({ 
    cache: false 
}); 

昨天我爭奪同樣的問題了大約一個半小時。我不知道爲什麼手動添加一個隨機查詢字符串不起作用,但這解決了我的問題。緩存命中是完全隨機的,直到我添加上面的一般設置。

+0

我試過這個,沒有運氣。我將對OP進行編輯,以指定我直接在記事本中查看.aspx源,並且它們作爲緩存版本來自服務器,無論是否涉及JQUERY。也許我應該重申這也是一個IIS問題。 – LesterDove 2011-06-09 19:14:31

+0

就像魅力一樣,我的AJAX請求不再被緩存,每次都會得到新的結果。如果不起作用,只需在請求的末尾添加一個隨機數(或時間戳),它將被視爲一個唯一的請求,而不是從緩存中獲取。 – Andreas 2012-05-07 00:20:50

1

爲了詳細說明@斯特凡的答案,緩存設置爲false告訴jQuery來附加一個隨機查詢字符串,使該請求是唯一的。

?例如:myURL.aspx ID = 123 &回調= & _ = 13245897565132154878