2010-07-22 62 views
1

我開發了一個簡單的覆蓋圖以預覽圖像的全尺寸。jQuery ajax緩存:false只能在Firefox中使用

我使用「cache:false」來防止緩存。

代碼很簡單:

$.ajax({ 
    url: urlFull, 
    cache: false, 
    success: function(html){ 
     // display image 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     // display error 
    } 
}); 

的問題是 - 當圖像文件將被另一個取代,瀏覽器將始終顯示無論「緩存:假」舊人,選項設置。

此問題出現在Safari 5.0(6533.16)和Chrome 5.0.375.99下。

在Firefox 3.6.3它按預期工作(無緩存)

我無法控制服務器端邏輯,因爲我預加載一個普通的文件,而無需調用軌控制器動作。

是否有解決此問題的方法?也許,我可以攔截Rails服務器的響應並調整一些標頭? ...我在localhost下開發。

謝謝。

回答

1

作爲一個「髒」的解決方案嘗試添加一個時間戳到您的URL GET參數。

+0

+1 - 它不是一個骯髒的解決方案,它是我知道的唯一方法可以在所有瀏覽器上運行。現在,如果您願意使用'POST'而不是'GET',那麼也會阻止緩存。 – 2010-07-22 07:01:22

+0

我還沒有找到文檔中的時間戳。我如何設置它? – AntonAL 2010-07-22 08:34:22

+1

只需將新的GET參數添加到您的URL: 'url + =「&avoidCache =」+(new Date())。getTime()' – spektom 2010-07-23 05:02:45

0

我曾嘗試使用

data: { timestamp: new Date().getTime() }. 

它不工作。

在Safari瀏覽器的開發者小組,我發現,該請求字符串如下所示:

http://path_to_the_image.png?_=1279789134612」。

我已經加入了 「_」 參數:

data: {_: new Date().getTime()} 

,並得到了以下網址:

http://path_to_the_image.png?=1279789134612&=1279789245466」。

此外,我試圖使用「timestamp」,「tstamp」,「t」;設置爲「0」,「9999999999999」 ......所有沒有給出結果...

看來,就像我無法控制的時間戳,在內部被設置好的在$就...

相關問題