Skip to content

Cache: only re-encode if maximum quality wasn't used originally #54

@OliverJAsh

Description

@OliverJAsh

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:

shrink-ray/index.js

Lines 411 to 422 in f7cfcc7

// 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();
}
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions