Gzipping 静态文件无法按要求工作(正如我认为的那样)。我使用了 gzippo 和express.compress()。两个文件都 gzipp 一次。如果我再次刷新页面,就没有 Content-Encoding:gzip
了。
她是我设置 Express 应用程序的方式:
var gzippo = require('gzippo');
var express = require('express');
var app = express();
app.use(express.compress());
app.use(app.router);
app.use(gzippo.staticGzip(__dirname + '/www'));
这是页面更新后 Chrome 网络响应 header 显示的内容:
已编辑完整请求 header
GET / HTTP/1.1
Host: myhost.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/ *;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: __utma=161759779.498387976.1381482631.1394444924.1394395346.80; __utmb=161759779.3.10.1394395346; __utmc=161759779; __utmz=161759779.1394444924.79.7.utmcsr=gtmetrix.com|utmccn=(referral)|utmcmd=referral|utmcct=/reports/myhost.com/5iXAs1ej/retest
If-None-Match: "25020-1394452200000"
If-Modified-Since: Mon, 10 Mar 2014 11:50:00 GMT
如果我再次刷新,它会显示:已编辑,带有完整的响应 header 。
HTTP/1.1 304 Not Modified
x-powered-by: Express
accept-ranges: bytes
etag: "25020-1394452200000"
date: Mon, 10 Mar 2014 10:51:45 GMT
cache-control: public, max-age=0
last-modified: Mon, 10 Mar 2014 11:50:00 GMT
如果我再次编辑页面,我会得到 Content-Encoding:gzip
但只有一次。
不知道是不是我的express设置有问题。
注意:我将我的页面提供为:res.sendfile(__dirname + '/www/index.html');
最佳答案
If I edit the page again I get Content-Encoding:gzip but only one time. I don't know if there is something wrong with my express setup.
一切都很好。服务器第一次使用 gzip 压缩发送文件。第二次,正常的etag缓存机制发挥作用,并且由于文件没有被修改,服务器告诉浏览器“您已经拥有该文件的正确版本”,因此服务器不需要发送响应根本没有正文,只是 header ,因此不需要任何 Content-Encoding
header 。
关于node.js - Nodejs中无法gzip压缩静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289337/