【发布时间】:2017-06-24 17:58:04
【问题描述】:
我使用 webpack-compression-plugin 预先将我所有的静态文件和 hml 文件压缩为 gzip 和 brotli 格式。如果浏览器支持它,我使用 brotli,如果不是 gzip,最后一个选项是原始文件。所以我会在捆绑后得到类似的东西。
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 版本,但它不是那样的。我通过捆绑服务器端代码来实现它。快速压缩模块不起作用,我也想要静态压缩。我没有使用 nginx。
【问题讨论】:
-
你找到解决方案了吗?否则,我使用stackoverflow.com/a/15323082/3241111 这对我有用。不知道,如何将它用于 .html 而不是
.js和.cssbcoz 我不希望服务器在每个请求上为 SSR 压缩js和css -
我没有找到简单的解决方案,但我确实找到了一个。我用过 Nginx。使用 Nginx,我可以使用 gzip_static 模块来提供预压缩的静态文件和常规的 gzip 动态模式,它只动态压缩 html 文件。
-
很好。你也压缩图像吗?
-
不,不是图片。在使用 pthotoshop save for web feature 和 TinyPNG 在线之前,我会压缩每个图像,因此图像已经被压缩,不建议对它们进行 gzip。
-
啊,好吧...这很有意义..使用 tinypng 压缩图像之前,但是当我使用 tinypng 压缩我的一张图像(51kb)时,它只下降了 1.5kB 但灯塔抱怨原始图像(51kb)要压缩到 25% :P 我在请求标头中检查了
content-type,它接受 gzip 格式.. 可能我需要阅读更多关于此的内容:) 还要在 2 分钟内检查下面的答案...我有什么工作..
标签: express webpack compression gzip brotli