It seems that this module will asynchronously re-encode at the best/maximum quality, even if the maximum quality was used originally. IIUC, this means that if you ask for the maximum quality, shrink-ray will end up compressing the resource twice at the maximum quality.
I think we need to add a guard around the re-encode, so that it only runs if maximum quality wasn't already used:
|
// now asynchronously re-encode the entry at best quality |
|
const result = new BufferWritable(); |
|
|
|
new BufferReadable(buffer) |
|
.pipe(getBestQualityReencoder(coding, zopfli)) |
|
.pipe(result) |
|
.on('finish', function () { |
|
const itemInCache = lru.peek(key); |
|
if (itemInCache) { |
|
itemInCache.buffer = result.toBuffer(); |
|
} |
|
}); |
It seems that this module will asynchronously re-encode at the best/maximum quality, even if the maximum quality was used originally. IIUC, this means that if you ask for the maximum quality,
shrink-raywill end up compressing the resource twice at the maximum quality.I think we need to add a guard around the re-encode, so that it only runs if maximum quality wasn't already used:
shrink-ray/index.js
Lines 411 to 422 in f7cfcc7