Я разрабатываю приложение с помощью yoman + grunt + angularJs.
Чтобы загружать файл JS только при необходимости, я добавил путь к файлу JS внутри calendar.html.
Для этого я изменил файл grunt.js и html.
Файл Grunt.JS
useminPrepare: {
html: ['<%= yeoman.app %>/index.html', '<%= yeoman.app %>/views/*.html'],
options: {
dest: '<%= yeoman.dist %>',
flow: {
html: {
steps: {
js: ['concat', 'uglifyjs'],
css: ['cssmin']
},
post: {}
}
}
}
}
Измененный файл calendar.html
<!-- build:js({.tmp,app}) scripts/fullcalendar.js -->
<script src="scripts/plugins/fullcalendar/fullcalendar.js"></script>
<!-- endbuild -->
Это решение работает правильно. Но теперь всякий раз, когда я загружаю страницу календаря, новый запрос отправляется на fullcalenar.js с динамическим параметром строки запроса, подобным этому
http://localhost/scripts/fullcalendar.a13f9b72f8.js?_=1422010995753
Это число (1422010995753) увеличивается каждый раз, когда я делаю запрос, который не позволяет браузерам кэшировать файл.
Я считаю, что это из-за assetsCacheBuster, но вот моя конфигурация Grunt. И я установил для него значение false вместе с debugInfo.
compass: {
options: {
javascriptsDir: '<%= yeoman.app %>/scripts',
fontsDir: '<%= yeoman.app %>/styles/fonts',
importPath: './bower_components',
relativeAssets: false,
assetCacheBuster: false,
raw: 'Sass::Script::Number.precision = 10\n'
},
server: {
options: {
debugInfo: false
}
}
}
Моя проблема в том, что я хочу кэшировать файл fullcalendar.js и не хочу каждый раз получать новый файл JS.
Если я перемещаюсь выше кода calendar.html внутри файла index.html, приложение работает правильно и кэширует файл без объединения с остальными js. Но если я добавлю этот код в index.html, файл fullcalendar.js будет загружен с самой первой страницей.