Angular Script Loading внутри частичного представления - проблемы с кэшированием

0

У меня возникают проблемы с загрузкой JavaScripts внутри частичного представления в моем Угловом приложении.

Это моя настройка: ui-router устанавливает ui-view для запросов в /profile как <app-home-profile></app-home-profile>.

Директива appHomeProfile настраивается следующим образом:

app.directive('appHomeProfile', function() {
    return {
        restrict: 'E',
        templateUrl: 'templates/user/profile.html',
        controller: ...,
        controllerAs: 'profileCtrl'
    }
});

Теперь, внутри файла profile.html я включаю стандартный HTML и внизу его зависимости от JavaScript:

<script type="text/javascript" src="/javascripts/myScript1.js"></script>
<script type="text/javascript" src="/javascripts/myScript2.js"></script>

Проблема в том, что журналы сервера показывают, что Angular добавляет временную метку к запросам, поэтому не позволяет кэшировать любой из скриптов! Этого не происходит с помощью скриптов зарядил "обычный" путь в head документа.

GET /javascripts/myScript1.js?_=1437207405398 200 2.356 ms - 22524
GET /javascripts/myScript2.js?_=1437207405399 200 1.873 ms - 29695

Любая помощь в том, как решить эту проблему, оценена!

Спасибо, Ник

  • 0
    Проверьте это: stackoverflow.com/questions/28694371/…
  • 0
    Привет @pro, это на самом деле не ответил на вопрос. Мои скрипты загружаются, только проблема с временной меткой добавляется в запрос HTTP, вызывая проблемы кэширования.
Теги:
mean-stack
caching

1 ответ

1
Лучший ответ

В отличие от jQuery, Angular не поддерживает <script> в запрошенных шаблонах из-за упрощенной реализации jqLite. Это можно зафиксировать так.

Причина, по которой он работает в вашем примере, заключается в том, что вы используете jQuery в своем приложении, поэтому он управляет DOM вместо jqLite. Временные метки в запросах AJAX добавляются, чтобы отключить кеширование браузера, это поведение по умолчанию для jQuery. Его можно отключить с помощью

app.config(function () {
  angular.element.ajaxSetup && angular.element.ajaxSetup({ cache: true });
});
  • 0
    Большое спасибо за объяснение и решение!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню