add if-modified-since and cache-control
This commit is contained in:
parent
4e2e46a98d
commit
7e67f40fbf
1 changed files with 12 additions and 3 deletions
|
@ -118,7 +118,7 @@ export const serve_style = {
|
||||||
if (!item || !validatedFormat) {
|
if (!item || !validatedFormat) {
|
||||||
if (verbose)
|
if (verbose)
|
||||||
console.error(
|
console.error(
|
||||||
`Sprite item, format, or scale not found for: /styles/%s/sprite/%s%s%s`,
|
`Sprite item or format not found for: /styles/%s/sprite/%s%s%s`,
|
||||||
sanitizedId,
|
sanitizedId,
|
||||||
sanitizedSpriteID,
|
sanitizedSpriteID,
|
||||||
sanitizedScale,
|
sanitizedScale,
|
||||||
|
@ -126,13 +126,12 @@ export const serve_style = {
|
||||||
);
|
);
|
||||||
return res.sendStatus(404);
|
return res.sendStatus(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
const sprite = item.spritePaths.find((sprite) => sprite.id === spriteID);
|
const sprite = item.spritePaths.find((sprite) => sprite.id === spriteID);
|
||||||
const spriteScale = allowedSpriteScales(scale);
|
const spriteScale = allowedSpriteScales(scale);
|
||||||
if (!sprite || spriteScale === null) {
|
if (!sprite || spriteScale === null) {
|
||||||
if (verbose)
|
if (verbose)
|
||||||
console.error(
|
console.error(
|
||||||
`Sprite not found for: /styles/%s/sprite/%s%s%s`,
|
`Bad Sprite ID or Scale for: /styles/%s/sprite/%s%s%s`,
|
||||||
sanitizedId,
|
sanitizedId,
|
||||||
sanitizedSpriteID,
|
sanitizedSpriteID,
|
||||||
sanitizedScale,
|
sanitizedScale,
|
||||||
|
@ -141,6 +140,14 @@ export const serve_style = {
|
||||||
return res.status(400).send('Bad Sprite ID or Scale');
|
return res.status(400).send('Bad Sprite ID or Scale');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const modifiedSince = req.get('if-modified-since');
|
||||||
|
const cc = req.get('cache-control');
|
||||||
|
if (modifiedSince && (!cc || cc.indexOf('no-cache') === -1)) {
|
||||||
|
if (new Date(item.lastModified) <= new Date(modifiedSince)) {
|
||||||
|
return res.sendStatus(304);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const sanitizedSpritePath = sprite.path.replace(/^(\.\.\/)+/, '');
|
const sanitizedSpritePath = sprite.path.replace(/^(\.\.\/)+/, '');
|
||||||
const filename = `${sanitizedSpritePath}${spriteScale}.${validatedFormat}`;
|
const filename = `${sanitizedSpritePath}${spriteScale}.${validatedFormat}`;
|
||||||
if (verbose) console.log(`Loading sprite from: %s`, filename);
|
if (verbose) console.log(`Loading sprite from: %s`, filename);
|
||||||
|
@ -156,6 +163,7 @@ export const serve_style = {
|
||||||
);
|
);
|
||||||
return res.sendStatus(404);
|
return res.sendStatus(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validatedFormat === 'json') {
|
if (validatedFormat === 'json') {
|
||||||
res.header('Content-type', 'application/json');
|
res.header('Content-type', 'application/json');
|
||||||
} else if (validatedFormat === 'png') {
|
} else if (validatedFormat === 'png') {
|
||||||
|
@ -169,6 +177,7 @@ export const serve_style = {
|
||||||
sanitizedScale,
|
sanitizedScale,
|
||||||
sanitizedFormat,
|
sanitizedFormat,
|
||||||
);
|
);
|
||||||
|
res.set({ 'Last-Modified': item.lastModified });
|
||||||
return res.send(data);
|
return res.send(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue