Make two webpack plugin modifications
First, remove the preload plugin installed by default. Given that the
login page requires the complete javascript package to be loaded before
the page can be rendered, and doing the rendering inside of bmcweb
before javascript is loaded[1] doesn't seem to be desired by the
community, preloading it does us essentially no good. The DOM itself is
tiny.
This fixes a split second flash that's seen on refresh, where the DOM is
loaded, but the javascript has not, so there's no content to render.
Second, modify the html loader plugin to produce the hash of the file at
output, thus allowing the index file to be cached, and allowing the etag
machinery[2] to work.
[1] https://gerrit.openbmc.org/c/openbmc/bmcweb/+/35456
[2] https://gerrit.openbmc.org/c/openbmc/bmcweb/+/70644
Tested: After this patch, nearly all resources on refresh return 304,
not modified from bmcweb. This significantly reduces the requirements
for TLS encryption on the BMC.
Change-Id: I7189c6024cacba099705ff6d27e4567bf88f3df4
Signed-off-by: Ed Tanous <ed@tanous.net>
diff --git a/vue.config.js b/vue.config.js
index e66d5d1..01d48b9 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -69,6 +69,11 @@
.options({
name: '[name].[contenthash:8].[ext]',
});
+ config.plugins.delete('preload');
+ config.plugin('html').tap((options) => {
+ options[0].filename = 'index.[hash:8].html';
+ return options;
+ });
},
configureWebpack: (config) => {
config.plugins.push(