Как предотвратить кэширование представлений 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, когда используется независимо.

1 ответ

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

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

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

Другие вопросы по тегам