Имам повтарящ се проблем, който възниква, когато правя промени в моето приложение angularjs. Проблемът е, че трябва да опресня страницата, ако искам да заредя промените, които съм направил. Това е проблем, защото не искам моите потребители да трябва да опресняват страницата (може да не знаят да направят това). Може да си помислят, че сайтът е повреден. Има ли някаква ъглова директива или процес, който мога да следвам, който ще позволи промените ми в потребителския интерфейс да бъдат отразени на моя производствен сървър, без моите потребители да трябва да опресняват страницата?
Проблеми при опресняване на промените в angularjs на производствен сървър
Отговори (2)
Има няколко решения, които можете да разгледате,
- Тук има подобен отговор на вашия въпрос:
AngularJS деактивира частичното кеширане на машина за разработка
За да цитирам приетия отговор на тази публикация:
"ето един начин винаги автоматично да изчиствате кеша, когато съдържанието на ng-view се промени"
myApp.run(function($rootScope, $templateCache) { $rootScope.$on('$viewContentLoaded', function() { $templateCache.removeAll(); }); });
- Тук може да се намери и неъглово решение:
Принудително изчистване на кеша на браузъра
За да цитирам най-добрия отговор на този пост (отговорът на Фермин):
Ако искате да видите промените в css или js, един от начините е да добавите _versionNo към css/js файла за всяко издание. напр.
script_1.0.css script_1.1.css script_1.2.css и т.н.
Можете да проверите тази връзка, за да видите как може да работи.
Надявам се тези да помогнат.
РЕДАКТИРАНЕ. За да отговоря на вашия коментар, съжалявам, че горното не проработи.
Може би бихте могли да опитате да приложите подход, базиран на websockets, подобен на Trello, при който след определен период от време вие молите потребителя да актуализира страницата си, за да получава нови актуализации на системата или да опресни, ако връзката му с сокет е изтекла? В зависимост от вашата настройка може да намерите този урок за полезен: http://www.html5rocks.com/en/tutorials/frameworks/angular-websockets/
alert('TEST')
след $templateCache.removeAll();
и видях предупредителното съобщение, но нито една от новите ми ъглови промени не се показва на страницата, освен ако не опресня страницата. Това представлява огромен проблем при актуализиране на ъглово приложение. Не мога разумно да очаквам потребителите ми да знаят кога да обновят страницата.
- person Chris Paterson; 19.12.2013
С помощта на html2js можете по-лесно да управлявате версиите на шаблони. Това е плъгин на Grunt, който ще зареди всички ваши шаблони в js файл. Недостатъкът е, че всички ваши шаблони се зареждат независимо от необходимостта, плюсът е, че всичките ви шаблони са заредени готови за използване при едно http извикване и една точка на кеширане за тях. По този начин можете да настроите да преименувате вашия js файл при нови издания и да разбиете кеша за шаблони при производство. Що се отнася до dev, другият отговор тук е достатъчен.