我使用webpack-compression-plugin将我的所有静态文件和hml文件事先压缩为gzip和brotli格式。如果浏览器支持它,我使用brotli,如果不是gzip并且最后一个选项是原始文件。所以我会在捆绑后有这样的事情。服务节点中的gzip html页面
bundle.js
bundle.js.gz
bundle.js.br
在服务器上,我使用express-static-gzip来提供静态文件,并且一切正常。我所有的客户端静态资产都是以这种方式压缩和提供的。
import expressStaticGzip from 'express-static-gzip'
const app: Express = new Express()
process.env.PWD = process.cwd()
app.set('view engine', 'ejs')
app.set('views', path.join(process.env.PWD + '/src/server/views'))
app.use(expressStaticGzip(path.join(process.env.PWD + '/src/dist'), {indexFromEmptyFile: false, enableBrotli: true, maxAge: '1y'}))
app.use((req, res, next) => {
res.set('Cache-Control', 'no-cache')
return next()
})
/* Use server side rendering for first load */
app.use(appRenderer)
// Routes
app.get('*', (req, res) => {
res.render('index')
})
app.listen(PORT,() => {
console.log(`
Express server is up on port ${PORT}
Production environment
`)
})
我遇到的问题是我的html文件,root。虽然我也有它的gzip和br版本,但不是那样。我通过捆绑服务器端代码来制作它。 Express压缩模块不起作用,我也想静态压缩。我没有使用nginx。
您是否碰巧找到解决方案?否则,我使用https://stackoverflow.com/a/15323082/3241111这适用于我。不知道,如何使用它只是.html而不是'.js'和'.css' bcoz我不希望服务器为每个请求的SSR压缩'js'和'css' – myDoggyWritesCode
我没有'找到简单的解决方案,但我找到了一个。我使用了Nginx。使用Nginx,我可以使用gzip_static模块来提供预压缩的静态文件和常规的gzip动态模式,这些模式可以即时压缩html文件。 –
很好。你是否也压缩图像? – myDoggyWritesCode