2017-09-24 103 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

的關鍵決定你是你是否要解壓縮並在代理重新壓縮數據或只是流到底。如果您不需要服務器中的數據解壓縮副本,那麼跳過額外步驟會更有效。你需要小心以確保所有的標題設置正確,但是如果你只傳遞你接收到的相關頭文件(在兩個方向上),通過黑暗天空的響應應該相對簡單。