pj_*_*ata 12 static nginx node.js express
由于开销,我不想使用动态gzips的库.
该网站有一些动态组件,在node.js中实现.
我有一些静态的js和css文件以及它们的gzip压缩文件.我想只为支持它的浏览器提供gzip压缩版本.
我考虑使用express中的静态中间件来提供静态文件,以及一些URL重写中间件来有条件地提供gzip压缩文件.但是,我找不到任何条件重写模块.
我无法相信没有人这样做,或者它需要这么多的工作.我错过了什么?
另一方面,通过node.js提供静态文件太贵了吗?另一方面,使用Apache作为静态文件并运行node.js似乎也很糟糕.AWS EC2托管的最不笨的配置是什么?
Far*_*hat 13
如果您想为您的客户提供最佳性能,请使用CDN.它将为您和许多其他东西照顾gzipping.如果您需要帮助,可以使用express-cdn模块.
如果由于某些原因你不喜欢CDN,最好的办法就是使用nginx.我在你的问题中看到它被标记了,但是你没有提到它.nginx比node.js快.对于nginx,您可以检查它的gzip-static模块.
如果您仍想使用node.js,那么connect-gzip-static是您最好的选择.它的工作方式与nginx-gzip-static模块几乎相同.如果.gz所请求文件的文件对应,那么它将使用它,否则它将回退到正常的connect-static模块.
不要忘记事先编译文件,如果你正在使用gulp,那么你也可以使用gulp-gzip.如果不只是使用gzip命令.
还有gzippo,它在飞行中gzips,但它也将结果缓存在内存中.所以它只会被gzipped一次.
Sha*_*kam 10
此代码适用于Express 4
app.get('*.js', function(req, res, next) {
req.url = req.url + '.gz';
res.set('Content-Encoding', 'gzip');
res.set('Content-Type', 'text/javascript');
next();
});
app.get('*.css', function(req, res, next) {
req.url = req.url + '.gz';
res.set('Content-Encoding', 'gzip');
res.set('Content-Type', 'text/css');
next();
});
Run Code Online (Sandbox Code Playgroud)
确保为这样的压缩文件设置正确的内容类型 - mime-types reference - :
res.set('Content-Type', 'text/css');
Run Code Online (Sandbox Code Playgroud)
或者它不起作用
| 归档时间: |
|
| 查看次数: |
11034 次 |
| 最近记录: |