2017-09-24 57 views
2

我插科打诨与Darksky API并根据查询的一个参数就启用HTTP压缩指出:与快递

延长=每小时可选

存在时,返回小时逐小时数据为下一个168小时,而不是下一个48的 。使用此选项时,我们强烈建议启用 HTTP压缩。

我使用Express作为点击Darksky api(即localhost:3000/api/forecast/LATITUDE,LONGITUDE)的节点代理。

“HTTP压缩”是什么意思,我将如何去实现它?

+1

很多时候,建议将NodeJS express服务器放在NGINX服务器后面。 NGINX服务器的压缩效果非常好。 – Aminadav

回答

4

这里压缩表示express服务器上的gzip压缩。您可以使用compression中间件为您的服务器添加简单的gzip压缩。

了解更多关于如何在这里安装该中间件的信息。 https://github.com/expressjs/compression

一个示例实现应该看起来像这样。

var compression = require('compression') 
var express = require('express') 

var app = express() 

// compress all responses 
app.use(compression()) 

// add all routes 
1

引述https://darksky.net/dev/docs

预测数据API支持HTTP压缩。我们衷心推荐使用它,因为它会使线路的响应更小。要启用它,只需将Accept-Encoding:gzip标头添加到您的请求中即可。 (大多数HTTP客户端库包装这个功能对你来说,请咨询您的图书馆的使用说明。)

我不熟悉的黑暗的天空API但我想它会返回大量高度冗余的数据,这是压缩的理想选择。如上所述,HTTP请求具有通过Accept-Encoding内置的压缩​​机制。

在你的情况下,数据将穿过电线两次,一次从黑暗天空到你的服务器,然后再从服务器到最终用户。您可以只压缩这两种传输中的一种,或者两者兼而有之,这取决于您,但您可能希望两者都有,除非最终用户与您的服务器位于同一本地网络中。

大约有使压缩请求各种做题,如:

node.js - easy http requests with gzip/deflate compression

的关键决定你是你是否要解压缩并在代理重新压缩数据或只是流到底。如果您不需要服务器中的数据解压缩副本,那么跳过额外步骤会更有效。你需要小心以确保所有的标题设置正确,但是如果你只传递你接收到的相关头文件(在两个方向上),通过黑暗天空的响应应该相对简单。