是否可以单独缓存JavaScript文件,即使它们被合并为一个JavaScript文件?
我需要这个,因为我希望同时缓存下载的内容和组合通过互联网发送的数据。
浏览器特定的解决方案也将非常受欢迎!
答案 0 :(得分:2)
是的,Angular实际上做了类似的事情。诀窍是缓存在不同的级别而不是HTTP协议级别。您可以自己缓存到localStorage
或indexeddb。
创建一个缓存对象,每当你添加一个文件时,把它放在那里
// a.js, this file generated by a readFile call in nodejs or whatever
// build process you want to have
var cache = cache || {}; // might also want to use an array here to preserve order
cache["a.js"] = "your real a.js file as code";
一个文件请求可以简单地为要缓存的每个文件重复包含这四行,版本控制也可能适用于此。
接下来,在您的身体部分的末尾,您可以放置
// let's say you need in this particular page a.js b.js
eval(cache["a.js"]); // write a helper function for this, remember
eval(cache["b.js"]); // cache is for example localStorage with a prefix
eval(cache["c.js"]);
答案 1 :(得分:0)
看看gulp。和gulp-concat具体。
此代码读取我的所有.js源文件:
// Make sources. Uglify, Concat, and add hash if necessary
// Determine output file. Only used if config.concat === true
var destJs = 'app' + (config.minify?'.min':'') + '.js';
var appJs = gulp.src([config.dashboard.js, '!/src/dashboard/vendor/'])
.pipe(plugins.plumber())
.pipe(plugins.ngAnnotate())
.pipe(plugins.angularFilesort())
.pipe(plugins.if(config.minify, plugins.uglify()))
.pipe(plugins.if(config.concat, plugins.concat(destJs)))
.pipe(plugins.if(config.hash, plugins.hash()))
.pipe(gulp.dest(config.dashboard.dest + '/js'))
build/js
文件夹。 var plugins = require('gulp-load-plugins')();
加载了插件。
这里有很多,但一旦你进入它,它真的很简单。 方式比咕噜更容易,或者根据我的经验制作。
对于你的问题,你可以在pipe()的多个地方gulp.dest()。在缩小/连接之前和之后。