我正在用yeoman + grunt + angularJs开发应用程序。
仅在需要我在calendar.html中添加了JS文件路径时才加载JS文件。
为了达到这个目的,我修改了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)都会递增。
我相信这是因为assetCacheBuster,但这是我的Grunt配置。我将它与debugInfo一起设置为false。
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文件。
如果我在index.html文件应用程序内部的calendar.html代码上移动正常工作并缓存文件而不与其他js组合。但是如果我在index.html中添加该代码,则fullcalendar.js文件将加载第一页本身。