Как игнорировать/очистить кеш приложения панели задач Excel?

Я пишу приложение панели задач для Excel, используя API JavaScript для Office. В этом приложении я запрашиваю данные с другого сервера и показываю эти данные на листе 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";
...

person Rene    schedule 03.02.2016    source источник
comment
Неясно, что вы подразумеваете под * неизмененными данными на листе после обновления. Может быть, пример кода поможет?   -  person Michael Zlatkovsky - Microsoft    schedule 03.02.2016


Ответы (1)


Отключение кеша в ajax помогло.

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