我使用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