2015-12-31 2 views
1

Я открываю модальное диалоговое окно со следующим:

var modalInstance = $modal.open({ 
     animation: false, 
     templateUrl: '../templates/ResponseModal.html', 
     controller: 'ModalResponseCtrl', 
     size: 'lg', 
     resolve: { 
      response: function() { 
       return selResponse; 
      }, 
      cmt: function() { 
       return cmt; 
      } 
     } 
    }); 

Все работает правильно. Однако, если я изменю ResponseModal.html на сервере, браузер никогда не перечитывает файл. В консоли браузера нет попытки прочитать его или даже проверить, не изменилось ли оно. Каким-то образом старая копия файла ResponseModal.html кэшируется в памяти, и я не могу понять, как ее очистить и заставить ее читать снова. Обычно я использую «change-refresh», чтобы заставить браузер повторно извлекать все части, но это не работает. Закрытие браузера полностью и перезапуск не очищает кеш. Удаление всей истории работает, но это сильно.

Есть ли более простой способ, чтобы убедить механизм $ modal забыть старую кешированную копию и перечитать новый с сервера?

+1

Убедитесь, что настройки вашего браузера установлены для отключения кеша для разработки – jbrown

+0

Я не нашел эту настройку для Mozilla. Я видел большую дискуссию о Chrome и работает только тогда, когда панель разработчиков открыта - что лучше, чем ничего. Вы знаете, существует ли это для Mozilla? – AgilePro

+0

Не уверен ... Я использую Chrome в первую очередь. Его боль, чтобы помнить, что инструменты разработчика открыты, но вы привыкаете к этому. – jbrown

ответ

0

Комментарий jbrown абсолютно прав (и в Chrome Chrome еще проще, просто откройте инспектор, и он автоматически отключит кеш при открытии), однако бывают случаи, когда вы не хотите, чтобы эти .html-файлы кэшировались во ВСЕ, поскольку они может потенциально измениться (или сгенерироваться) в производственной среде.

Предполагая, что вы используете Apache, я нашел в этом случае, что использование .htaccess отлично работает, чтобы отключить кеш в определенных файлах просмотра. Давайте будем честными, в сегодняшнем дне он не обслуживает .html-файлы, которые вызывают нагрузку на сервер, это материал с динамическими данными. Вот простой способ отключить (почти все) кэширование на ваши простое .html обертонов, используя .htaccess

ExpiresActive On 
ExpiresByType text/html "access plus 1 minute" 

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

0

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

В зависимости от ваших Expires и Cache-Control заголовков, принудительная перезагрузка может не работать. Лучше всего отключить кеширование браузером, когда окно отладки браузера открыто, как указано выше.

Поймите, что вы все еще должны тестировать свое приложение, поскольку обычный пользователь будет использовать ваше приложение и НЕ полагаться на обновленные кеши.

+0

У меня такая же проблема, и мои теги установлены в no-cache, no-store. –

Смежные вопросы