2011-09-10 62 views
3

我使用express'res.end等服務json作爲我的其餘api的一部分。nodejs expressjs gzip json content

谷歌pagespeed告訴我要gzip它。

然而,根據這個線索:

http://groups.google.com/group/express-js/browse_thread/thread/db1ad3307cb4f504/64f02170f616527c

它似乎沒有一個好主意。在所有這些內容都是動態的,不可分割的之前,在每個請求之前進行gzipping並不是什麼好處。

我對不對?或者我應該追求gzip,謝謝。

要清楚:靜態內容(css,js)已經被壓縮。

回答

5

Gzip可以對您的網站性能產生很大的影響,特別是在慢速/移動連接上,因爲它減少了瀏覽器必須接收的數據量(和數據包數量)。

我不知道在Express中的具體實現,但使用Gzip是服務器CPU時間和帶寬之間的折衷。您在服務器上使用(略)更多的CPU來壓縮內容,但是您可以減少帶寬使用量,頁面加載時間以及Web服務器在向瀏覽器發送數據時保持打開套接字的時間。每個最佳實踐指南和頁面速度分析軟件(如Google Page Speed,Web Page Test等)都強烈建議使用Gzip,所以我認爲這種努力是值得的。

關於如何在Express中實現它,我個人使用Nginx將所有請求代理到我的Express應用程序(並提供靜態內容),所以我簡單地將Nginx配置爲gzip HTML,CSS,Javascript和一些其他類型的資源發送給客戶。

一些參考:

+0

你每次請求之前gzip壓縮? – Harry

+0

是的,每個頁面在發送回客戶端之前都是實時壓縮的(這就是幾乎每個啓用了Gzip的站點所做的)。如果我有一些靜態資源在一段時間內不會改變,我通常會將它們預壓縮到磁盤上,並指示Nginx發送.gz版本(如果瀏覽器支持的話)。 – MartinodF

+0

某些web gzip實現將只能壓縮文本格式 - 文本/純文本,文本/ html,應用程序/ json,應用程序/ xml - 並且只有當有效載荷超過最小大小(如1K或某物)時纔有選擇。這可以避免壓縮壓縮很差的文件。如果在壓縮之後文件沒有變小,我還會看到它會發送未壓縮版本的情況。 –