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