Как предотвратить кэширование представлений AngularJs в приложении панели задач Office

Я создаю Office Web App в AngularJs, и мои представления кэшируются, я пытаюсь решить, как предотвратить кэширование моих представлений AngularJS.

Изменения в файле Index.html и в формате *.js отражаются на панели вкладок, но никакие изменения в представлении — нет. Вот некоторые вещи, которые не сработали:

Добавьте их в заголовок index.html:

<meta http-equiv="cache-control" content="no-store">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">

Добавляем это в application.js:

app.run(function ($rootScope, $templateCache) {
    $templateCache.removeAll();

    $rootScope.$on('$viewContentLoaded', function () {
        $templateCache.removeAll();
    });
 });

Добавляем это в web.config:

  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="DisableCache" />
    </staticContent>
  </system.webServer>

Единственное, что сработало, это переименовать представление.

Кэширование не происходит в Chrome, Firefox или даже IE при независимом использовании.


person Paul T Davies    schedule 27.04.2015    source источник
comment
не могли бы вы также попробовать это $templateCache.removeAll(); при изменении маршрута?   -  person Pankaj Parkar    schedule 27.04.2015
comment
@pankajparkar ты меня на('$routeChangeStart') ? Сделано это тоже   -  person Paul T Davies    schedule 27.04.2015
comment
Даа.. это как-то повлияло?   -  person Pankaj Parkar    schedule 27.04.2015
comment
@pankajparkar Нет, к сожалению.   -  person Paul T Davies    schedule 27.04.2015


Ответы (1)


Это можно решить с помощью простой строки запроса в теге ng-include, как указано в это объяснение кэширования html со строками запроса в целом (но в данном случае также применимо к Angular).

Итак, в моем приложении панели задач Office у меня было ng-include="'partials/allhtml.html'", я изменил его на ng-include="'partials/allhtml.html?v=1.0.1'" и решил свою проблему с кэшированием.

Как указано в ссылке, вам не нужно каждый раз менять значение ?v; пока у вас есть строка запроса, http get не будет кэшироваться!

person sean.hudson    schedule 30.06.2015