From 5d0a9fdefe8267d0ca7e38c2aba4e9170253e4b0 Mon Sep 17 00:00:00 2001 From: Stefan Forstenlechner Date: Tue, 20 Aug 2024 23:35:06 +0200 Subject: [PATCH] Fix caching on server --- picture-gallery-server/package-lock.json | 36 +++++++++++++------ picture-gallery-server/package.json | 2 ++ .../src/router/routerHtml.ts | 5 +-- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/picture-gallery-server/package-lock.json b/picture-gallery-server/package-lock.json index daec896..c85253b 100644 --- a/picture-gallery-server/package-lock.json +++ b/picture-gallery-server/package-lock.json @@ -12,6 +12,7 @@ "express": "4.19.2", "express-winston": "4.2.0", "natsort": "2.0.3", + "serve-static": "^1.15.0", "sharp": "0.33.4", "winston": "3.14.1" }, @@ -19,6 +20,7 @@ "@types/express": "4.17.21", "@types/jest": "29.5.12", "@types/node": "22.2.0", + "@types/serve-static": "^1.15.7", "@typescript-eslint/eslint-plugin": "8.0.1", "@typescript-eslint/parser": "8.0.1", "eslint": "^8.57.0", @@ -1754,6 +1756,12 @@ "@types/node": "*" } }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -1832,13 +1840,14 @@ } }, "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/stack-utils": { @@ -9117,6 +9126,12 @@ "@types/node": "*" } }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -9195,13 +9210,14 @@ } }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "requires": { - "@types/mime": "^1", - "@types/node": "*" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, "@types/stack-utils": { diff --git a/picture-gallery-server/package.json b/picture-gallery-server/package.json index b625fde..253256e 100644 --- a/picture-gallery-server/package.json +++ b/picture-gallery-server/package.json @@ -21,6 +21,7 @@ "@types/express": "4.17.21", "@types/jest": "29.5.12", "@types/node": "22.2.0", + "@types/serve-static": "^1.15.7", "@typescript-eslint/eslint-plugin": "8.0.1", "@typescript-eslint/parser": "8.0.1", "eslint": "^8.57.0", @@ -41,6 +42,7 @@ "express": "4.19.2", "express-winston": "4.2.0", "natsort": "2.0.3", + "serve-static": "^1.15.0", "sharp": "0.33.4", "winston": "3.14.1" } diff --git a/picture-gallery-server/src/router/routerHtml.ts b/picture-gallery-server/src/router/routerHtml.ts index dbb7d4f..cb5d5e2 100644 --- a/picture-gallery-server/src/router/routerHtml.ts +++ b/picture-gallery-server/src/router/routerHtml.ts @@ -1,12 +1,13 @@ import express from "express"; import * as path from "path"; +import { ServeStaticOptions } from "serve-static"; import { publicPath } from "../paths"; export const routerHtml = express.Router(); -const withCaching = { +const withCaching: ServeStaticOptions = { maxAge: 2592000000, - setHeaders(res, _) { + setHeaders: (res, _) => { res.setHeader( "Expires", new Date(Date.now() + 2592000000 * 30).toUTCString(),