$ templateCache, ng-template и проблемы с кешированием - angularjs

Я пытаюсь кэшировать html-файлы моего приложения angularjs, следуя этому предложению: https://gist.github.com/ProLoser/6181026.

Я добавляю ключ динамического кеша, например ?v=123456790, ко всем файлам html (кроме тех, что находятся в каталоге шаблонов, используемом начальной загрузкой angular ui).

Для частичных файлов в их собственных файлах, т.е. app/views/customer/customer-history.html, это отлично работает. Однако для частичных экземпляров в форме сценария, например <script type='text/ng-template' id='customer-history'> шаблон не найден, и сделан запрос к серверу, в результате получено сообщение 404.

E.g. localhost:8080/customer-history/?v=1234567890

Я вижу, что рассматриваемые шаблоны находятся в $ templateCache. Те, которые используют ng-template, - это просто имя, т.е. customer-history, тогда как отдельные файлы находятся по пути app/views/customer/customer-history.html, как и следовало ожидать.

Это большое приложение, поэтому переместить их все в свои файлы и т. Д. Будет нетривиальной задачей. Я обыскал повсюду и ничего не обнаружил, так что я предполагаю, что это что-то базовое в том, как реализован templateCache.

Я использую плагин gulp-templatecache в процессе сборки, но количество документов довольно ограничено, и я не думаю, что проблема в этом.

Мое текущее решение состоит в том, чтобы просто пропустить на данный момент оскорбительные шаблоны в функции, добавляющей номер версии, путем декорирования функции inCache в фабрике $ templateCache и использования ее во время проверки для добавления cacheKey. Но я чувствую, что здесь упускается суть.


person DILP    schedule 15.05.2018    source источник


Ответы (1)


Отвечая на свой вопрос здесь.

Поскольку теги сценария являются частью содержащего html файла, который загружается в $ templateCache, сценарий уже там. Когда делается запрос для templateUrl, у него не должно быть приложения для очистки кеша.

Самый простой способ избежать всего этого - просто установить хэш или строку очистки кеша в файле "templates.js" или в любом другом шаблоне вывода процесса сборки. Таким образом, весь файл становится недействительным и перезагружается по мере необходимости.

person DILP    schedule 30.05.2018