У решения urlArgs есть проблемы.К сожалению, вы не можете контролировать все прокси-серверы, которые могут находиться между вами и веб-браузером вашего пользователя.К сожалению, некоторые из этих прокси-серверов могут быть настроены на игнорирование параметров URL при кэшировании файлов.Если это произойдет, то неверная версия вашего JS-файла будет доставлена вашему пользователю.
Я наконец сдался и внедрил собственное исправление непосредственно в require.js.Если вы хотите изменить свою версию библиотеки requirejs, это решение может работать для вас.
Патч можно посмотреть здесь:
https://github.com/jbcpollak/requirejs/commit/589ee0cdfe6f719cd761eee631ce68eee09a5a67
После добавления, вы можете сделать что-то вроде этого в вашей конфигурации config:
var require = {
baseUrl: "/scripts/",
cacheSuffix: ".buildNumber"
}
Используйте вашу систему сборки или серверную среду, чтобы заменить buildNumber
идентификатором версии / версией программного обеспечения / любимым цветом.
Использование требуют, как это:
require(["myModule"], function() {
// no-op;
});
Вызовет необходимость запросить этот файл:
http://yourserver.com/scripts/myModule.buildNumber.js
В нашей серверной среде мы используем правила перезаписи URL для удаления buildNumber и обслуживаемправильный файл JS.Таким образом, на самом деле нам не нужно беспокоиться о переименовании всех наших файлов JS.
Патч будет игнорировать любой сценарий, в котором указан протокол, и не повлияет на файлы, не относящиеся к JS.
Это хорошо работает для моей среды, но я понимаю, что некоторые пользователи предпочли бы префикс, а не суффикс, должно быть легко изменить мой коммит в соответствии с вашими потребностями.
Обновление:
В обсуждении pull-запроса автор requirejs предполагает, что это может работать как решение для префикса номера редакции:
var require = {
baseUrl: "/scripts/buildNumber."
};
Я не пробовал это, но подразумевается, что это будетзапросите следующий URL:
http://yourserver.com/scripts/buildNumber.myModule.js
, который может очень хорошо работать для многих людей, которые могут использовать префикс.
Вот несколько возможных дублирующих вопросов:
RequireJS и прокси-кэширование
require.js - Как я могу установить версию на необходимые модули как часть URL?