如何忽略/清除Excel任务窗格应用程序缓存



我正在使用Office JavaScript API编写一个适用于Excel的任务窗格应用程序。在此应用程序中,我从其他服务器请求数据,并在Excel工作表中显示此数据。工作表中的更改也可以上载到服务器。这些请求是对代理的简单 ajax 调用。代理会将此请求转发到服务器。到目前为止,这工作正常。

但请求缓存在 Excel 应用程序中的某个位置。更改后,刷新后,它仍会显示工作表中未更改的数据。但是数据在服务器端发生了变化。它不会向代理发送新请求,因此它会缓存在应用程序中。如果我使用 Chrome 和 Firefox 调用该应用程序,它可以正常工作。此处不会缓存任何内容。

是否有可能避免在 Office 应用中缓存?或者我可以手动触发失效/清除缓存吗?

编辑:

我所说的数据不变是什么意思:我在 excel 表中更改了一些内容并将这些数据上传到服务器。如果我现在刷新 excel 工作表中的数据,它将向我显示更改之前的数据,因为它将第一个请求中的数据缓存在某处并使用它们。它不会再次调用服务器来获取具有更改值的数据。希望这个解释有所帮助。

可以在这里添加一些代码示例,但我认为它们不会有很大帮助。

通过 ajax 调用获取数据的方法。当我刷新 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
            }
        });
    },

我已经在代理中设置了缓存标头,但它仍然缓存在 excel 应用程序中的某个位置。

...
context.Response.Headers["cache-control"] = "private, max-age=0, no-cache";
...

在 ajax 中禁用缓存可以解决问题。

$.ajax({
        type: 'GET',
        url: url,
        cache: false,
        dataType: 'json',
        success: function success(oData) {
           ...
        },
        error: function error(oErr) {
            // error handling
        }
    });

相关内容

  • 没有找到相关文章

最新更新