From a8b666e9f1ed002230869606308749614390c82f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 23 Jul 2019 09:48:48 +0200 Subject: Add plugin static files cache --- server/lib/client-html.ts | 14 +++++++++----- server/lib/plugins/plugin-manager.ts | 3 +++ 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'server/lib') diff --git a/server/lib/client-html.ts b/server/lib/client-html.ts index ccc963514..1e7897220 100644 --- a/server/lib/client-html.ts +++ b/server/lib/client-html.ts @@ -1,8 +1,8 @@ import * as express from 'express' import { buildFileLocale, getDefaultLocale, is18nLocale, POSSIBLE_LOCALES } from '../../shared/models/i18n/i18n' -import { CUSTOM_HTML_TAG_COMMENTS, EMBED_SIZE, WEBSERVER } from '../initializers/constants' +import { CUSTOM_HTML_TAG_COMMENTS, EMBED_SIZE, PLUGIN_GLOBAL_CSS_PATH, WEBSERVER } from '../initializers/constants' import { join } from 'path' -import { escapeHTML } from '../helpers/core-utils' +import { escapeHTML, sha256 } from '../helpers/core-utils' import { VideoModel } from '../models/video/video' import * as validator from 'validator' import { VideoPrivacy } from '../../shared/models/videos' @@ -92,7 +92,7 @@ export class ClientHtml { let html = buffer.toString() html = ClientHtml.addCustomCSS(html) - html = ClientHtml.addPluginCSS(html) + html = await ClientHtml.addAsyncPluginCSS(html) ClientHtml.htmlCache[ path ] = html @@ -144,8 +144,12 @@ export class ClientHtml { return htmlStringPage.replace(CUSTOM_HTML_TAG_COMMENTS.CUSTOM_CSS, styleTag) } - private static addPluginCSS (htmlStringPage: string) { - const linkTag = `` + private static async addAsyncPluginCSS (htmlStringPage: string) { + const globalCSSContent = await readFile(PLUGIN_GLOBAL_CSS_PATH) + if (!globalCSSContent) return htmlStringPage + + const fileHash = sha256(globalCSSContent) + const linkTag = `` return htmlStringPage.replace('', linkTag + '') } diff --git a/server/lib/plugins/plugin-manager.ts b/server/lib/plugins/plugin-manager.ts index cfe63e50d..c0b49c7c7 100644 --- a/server/lib/plugins/plugin-manager.ts +++ b/server/lib/plugins/plugin-manager.ts @@ -17,6 +17,7 @@ import { ServerHook, ServerHookName, serverHookObject } from '../../../shared/mo import { getHookType, internalRunHook } from '../../../shared/core-utils/plugins/hooks' import { RegisterOptions } from '../../typings/plugins/register-options.model' import { PluginLibrary } from '../../typings/plugins' +import { ClientHtml } from '../client-html' export interface RegisteredPlugin { npmName: string @@ -323,6 +324,8 @@ export class PluginManager implements ServerHook { for (const cssPath of cssRelativePaths) { await this.concatFiles(join(pluginPath, cssPath), PLUGIN_GLOBAL_CSS_PATH) } + + ClientHtml.invalidCache() } private concatFiles (input: string, output: string) { -- cgit v1.2.3