node.js - Nodejs中无法gzip压缩静态文件

标签 node.js express gzip gzippo

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/

相关文章:

javascript - Node.js 异步 forEach : thread-safe?

javascript - 我如何比较nodeJS中mongodb的日期

javascript - nodeJS 视频流,当用户断开连接或移动到不同页面时连接不会关闭

javascript - express 发送文件错误404未找到

c++ - C++ 中的 ZLib 解压缩

c++ - 在不知道初始文件大小的情况下在 C++ 中创建压缩文件

node.js - 在 Mongoose 中创建具有独特属性的文档

node.js - 状态未在render()组件中更新

node.js - 使用云功能在 Google Cloud pub/sub 上发布只需 3 分钟 - NodeJS

zip - 如何找到 zip 文件的压缩级别?