🔄 feat: Add Configurable Cache Headers for Index.html (#4565)

* refactor: move o1 model check, after vision request check

* feat(server): add configurable cache headers for index.html

• Add environment variables to control index.html cache headers
• Default to no-cache configuration for consistent app updates
• Document cache control options in .env.example
This commit is contained in:
Danny Avila 2024-10-28 11:01:31 -04:00 committed by GitHub
parent a1647d76e0
commit b939e24f67
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 26 additions and 8 deletions

View file

@ -100,8 +100,6 @@ class OpenAIClient extends BaseClient {
this.options.modelOptions,
);
this.isO1Model = /\bo1\b/i.test(this.modelOptions.model);
this.defaultVisionModel = this.options.visionModel ?? 'gpt-4-vision-preview';
if (typeof this.options.attachments?.then === 'function') {
this.options.attachments.then((attachments) => this.checkVisionRequest(attachments));
@ -109,6 +107,8 @@ class OpenAIClient extends BaseClient {
this.checkVisionRequest(this.options.attachments);
}
this.isO1Model = /\bo1\b/i.test(this.modelOptions.model);
const { OPENROUTER_API_KEY, OPENAI_FORCE_PROMPT } = process.env ?? {};
if (OPENROUTER_API_KEY && !this.azure) {
this.apiKey = OPENROUTER_API_KEY;

View file

@ -112,10 +112,16 @@ const startServer = async () => {
app.use('/api/tags', routes.tags);
app.use((req, res) => {
// Replace lang attribute in index.html with lang from cookies or accept-language header
res.set({
'Cache-Control': process.env.INDEX_CACHE_CONTROL || 'no-cache, no-store, must-revalidate',
Pragma: process.env.INDEX_PRAGMA || 'no-cache',
Expires: process.env.INDEX_EXPIRES || '0',
});
const lang = req.cookies.lang || req.headers['accept-language']?.split(',')[0] || 'en-US';
const saneLang = lang.replace(/"/g, '"'); // sanitize untrusted user input
const saneLang = lang.replace(/"/g, '"');
const updatedIndexHtml = indexHTML.replace(/lang="en-US"/g, `lang="${saneLang}"`);
res.type('html');
res.send(updatedIndexHtml);
});