我正在使用Office JavaScript API为Excel编写任务窗格应用程序。在这个应用程序中,我从其他服务器请求数据,并在Excel工作表中显示此数据。工作表中的更改也可以上载到服务器。请求是对代理的简单ajax调用。代理会将此请求转发给服务器。到目前为止,此工作正常。
但是请求会在Excel App中的某处缓存。更改后,它仍然会在刷新后显示工作表中未更改的数据。但是在服务器端更改了数据。它不会向代理发送新请求,因此它会缓存在应用程序中。如果我使用Chrome和Firefox调用该应用程序,它工作正常。这里没有任何缓存。
是否有可能避免Office App中的缓存?或者我可以手动触发无效/清除缓存吗?
修改
对于未更改的数据我的意思是什么:我在excel表中更改了一些内容并将此数据上传到服务器。如果我现在刷新excel表中的数据,它将在更改之前显示数据,因为它缓存了第一个请求中的数据并使用它们。它不会再次调用服务器来获取具有更改值的数据。希望这个解释有所帮助。
可以在这里添加一些代码示例,但我不认为它们会有很大的帮助。
通过ajax调用获取数据的方法。仍然调用此方法并运行抛出回调,但当我刷新excel应用程序中的数据时,请求无法到达代理服务器。
[..]\Admin\RunningContext\MLRC.cfg
我已经在代理中设置了缓存标头,但它仍然在excel应用程序的某处缓存。
_downloadPeriods: function _downloadPeriods(sParameters) {
var oController = this;
...
var url = '/Proxy/RequestHandler.ashx/MaintainPeriodsExcelSet' + sParameters;
// ajax request to load the data from the sap backend server via the proxy
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function success(oData) {
// create a material collection from the data
oController.resetMaterialCollection();
var oMaterialCollection = oController.getMaterialCollection();
oMaterialCollection.updateData(oData.d.results);
// insert data into the excel worksheet
try {
oController._updateExcelTable(oMaterialCollection);
} catch (e) {
// error handling
}
fnCallback();
},
error: function error(oErr) {
// error handling
}
});
},
答案 0 :(得分:0)
在ajax中禁用缓存可以解决问题。
$.ajax({
type: 'GET',
url: url,
cache: false,
dataType: 'json',
success: function success(oData) {
...
},
error: function error(oErr) {
// error handling
}
});