mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Add cache buster middleware to clear browser cache on server restart
This commit is contained in:
@ -60,6 +60,7 @@ import basicAuthMiddleware from './src/middleware/basicAuth.js';
|
|||||||
import whitelistMiddleware from './src/middleware/whitelist.js';
|
import whitelistMiddleware from './src/middleware/whitelist.js';
|
||||||
import multerMonkeyPatch from './src/middleware/multerMonkeyPatch.js';
|
import multerMonkeyPatch from './src/middleware/multerMonkeyPatch.js';
|
||||||
import initRequestProxy from './src/request-proxy.js';
|
import initRequestProxy from './src/request-proxy.js';
|
||||||
|
import getCacheBusterMiddleware from './src/middleware/cacheBuster.js';
|
||||||
import {
|
import {
|
||||||
getVersion,
|
getVersion,
|
||||||
getConfigValue,
|
getConfigValue,
|
||||||
@ -515,7 +516,7 @@ if (!disableCsrf) {
|
|||||||
|
|
||||||
// Static files
|
// Static files
|
||||||
// Host index page
|
// Host index page
|
||||||
app.get('/', (request, response) => {
|
app.get('/', getCacheBusterMiddleware(), (request, response) => {
|
||||||
if (shouldRedirectToLogin(request)) {
|
if (shouldRedirectToLogin(request)) {
|
||||||
const query = request.url.split('?')[1];
|
const query = request.url.split('?')[1];
|
||||||
const redirectUrl = query ? `/login?${query}` : '/login';
|
const redirectUrl = query ? `/login?${query}` : '/login';
|
||||||
|
22
src/middleware/cacheBuster.js
Normal file
22
src/middleware/cacheBuster.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
* Middleware to bust the browser cache for the current user.
|
||||||
|
* @returns {import('express').RequestHandler}
|
||||||
|
*/
|
||||||
|
export default function getCacheBusterMiddleware() {
|
||||||
|
/**
|
||||||
|
* @type {Set<string>} Handles that have already been busted.
|
||||||
|
*/
|
||||||
|
const handles = new Set();
|
||||||
|
|
||||||
|
return (request, response, next) => {
|
||||||
|
const handle = request.user?.profile?.handle;
|
||||||
|
|
||||||
|
if (!handle || handles.has(handle)) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
|
handles.add(handle);
|
||||||
|
response.setHeader('Clear-Site-Data', '"cache"');
|
||||||
|
next();
|
||||||
|
};
|
||||||
|
}
|
Reference in New Issue
Block a user