add direct memory cache

This commit is contained in:
Tobias Koppers 2018-10-31 11:15:59 +01:00
parent 2688b5b17f
commit 4ed5622b53
1 changed files with 13 additions and 0 deletions

View File

@ -102,6 +102,7 @@ class FileCachePlugin {
*/
constructor(options) {
this.options = options;
this.directMemoryCache = new Map();
}
static purgeMemoryCache() {
@ -179,6 +180,7 @@ class FileCachePlugin {
};
const relativeFilename = toHash(identifier) + ".data";
const filename = path.join(cacheDirectory, relativeFilename);
this.directMemoryCache.set(identifier, entry);
memoryCache.set(filename, entry);
const promiseFactory =
store === "pack"
@ -221,6 +223,16 @@ class FileCachePlugin {
compiler.cache.hooks.get.tapPromise(
"FileCachePlugin",
(identifier, etag) => {
const directMemory = this.directMemoryCache.get(identifier);
if (directMemory !== undefined) {
return Promise.resolve(
directMemory.etag !== etag
? undefined
: typeof directMemory.data === "function"
? directMemory.data()
: directMemory.data
);
}
const relativeFilename = toHash(identifier) + ".data";
const filename = path.join(cacheDirectory, relativeFilename);
const logMessage = store === "pack" ? "pack" : filename;
@ -243,6 +255,7 @@ class FileCachePlugin {
if (cacheEntry === undefined) return;
if (typeof cacheEntry.data === "function")
cacheEntry.data = memorize(cacheEntry.data);
this.directMemoryCache.set(identifier, cacheEntry);
memoryCache.set(filename, cacheEntry);
if (cacheEntry === undefined) return;
if (cacheEntry.identifier !== identifier) {