成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用HTTP/2服務(wù)端推送技術(shù)加速Node.js應(yīng)用

開發(fā) 前端
四月份,我們宣布了對 HTTP/2 服務(wù)端推送技術(shù)的支持,我們是通過 HTTP 的 Link 頭部來實現(xiàn)這項支持的。我的同事 John 曾經(jīng)通過一個例子演示了在 PHP 里支持服務(wù)端推送功能是多么的簡單。我們想讓現(xiàn)今使用 Node.js 構(gòu)建的網(wǎng)站能夠更加輕松的獲得性能提升。

[[171625]]

四月份,我們宣布了對 HTTP/2 服務(wù)端推送技術(shù)的支持,我們是通過 HTTP 的 Link 頭部來實現(xiàn)這項支持的。我的同事 John 曾經(jīng)通過一個例子演示了在 PHP 里支持服務(wù)端推送功能是多么的簡單。

我們想讓現(xiàn)今使用 Node.js 構(gòu)建的網(wǎng)站能夠更加輕松的獲得性能提升。為此,我們開發(fā)了 netjet 中間件,它可以解析應(yīng)用生成的 HTML 并自動添加 Link 頭部。當(dāng)在一個示例的 Express 應(yīng)用中使用這個中間件時,我們可以看到應(yīng)用程序的輸出多了如下 HTTP 頭:

 本博客是使用 Ghost(LCTT 譯注:一個博客發(fā)布平臺)進(jìn)行發(fā)布的,因此如果你的瀏覽器支持 HTTP/2,你已經(jīng)在不知不覺中享受了服務(wù)端推送技術(shù)帶來的好處了。接下來,我們將進(jìn)行更詳細(xì)的說明。

netjet 使用了帶有定制插件的 PostHTML 來解析 HTML。目前,netjet 用它來查找圖片、腳本和外部 CSS 樣式表。你也可以用其它的技術(shù)來實現(xiàn)這個。

在響應(yīng)過程中增加 HTML 解析器有個明顯的缺點:這將增加頁面加載的延時(到加載***個字節(jié)所花的時間)。大多數(shù)情況下,所新增的延時被應(yīng)用里的其他耗時掩蓋掉了,比如數(shù)據(jù)庫訪問。為了解決這個問題,netjet 包含了一個可調(diào)節(jié)的 LRU 緩存,該緩存以 HTTP 的 ETag 頭部作為索引,這使得 netjet 可以非常快的為已經(jīng)解析過的頁面插入 Link 頭部。

不過,如果我們現(xiàn)在從頭設(shè)計一款全新的應(yīng)用,我們就應(yīng)該考慮把頁面內(nèi)容和頁面中的元數(shù)據(jù)分開存放,從而整體地減少 HTML 解析和其它可能增加的延時了。

任意的 Node.js HTML 框架,只要它支持類似 Express 這樣的中間件,netjet 都是能夠兼容的。只要把 netjet 像下面這樣加到中間件加載鏈里就可以了。

  1. var express = require('express'); 
  2. var netjet = require('netjet'); 
  3. var root = '/path/to/static/folder'
  4. express() 
  5.   .use(netjet({ 
  6.     cache: { 
  7.       max: 100 
  8.     } 
  9.   })) 
  10.   .use(express.static(root)) 
  11.   .listen(1337); 

稍微加點代碼,netjet 也可以擺脫 HTML 框架,獨(dú)立工作:

  1. var http = require('http'); 
  2. var netjet = require('netjet'); 
  3. var port = 1337; 
  4. var hostname = 'localhost'
  5. var preload = netjet({ 
  6.   cache: { 
  7.     max: 100 
  8.   } 
  9. }); 
  10. var server = http.createServer(function (req, res) { 
  11.   preload(req, res, function () { 
  12.       res.statusCode = 200; 
  13.       res.setHeader('Content-Type''text/html'); 
  14.       res.end('<!doctype html><h1>Hello World</h1>'); 
  15.   }); 
  16. }); 
  17. server.listen(port, hostname, function () { 
  18.   console.log('Server running at http://' + hostname + ':' + port+ '/'); 
  19. }); 

netjet 文檔里有更多選項的信息。

查看推送了什么數(shù)據(jù)

 訪問本文時,通過 Chrome 的開發(fā)者工具,我們可以輕松的驗證網(wǎng)站是否正在使用服務(wù)器推送技術(shù)(LCTT 譯注: Chrome 版本至少為 53)。在“Network”選項卡中,我們可以看到有些資源的“Initiator”這一列中包含了Push字樣,這些資源就是服務(wù)器端推送的。

不過,目前 Firefox 的開發(fā)者工具還不能直觀的展示被推送的資源。不過我們可以通過頁面響應(yīng)頭部里的cf-h2-pushed頭部看到一個列表,這個列表包含了本頁面主動推送給瀏覽器的資源。

希望大家能夠踴躍為 netjet 添磚加瓦,我也樂于看到有人正在使用 netjet。

Ghost 和服務(wù)端推送技術(shù)

Ghost 真是包羅萬象。在 Ghost 團(tuán)隊的幫助下,我把 netjet 也集成到里面了,而且作為測試版內(nèi)容可以在 Ghost 的 0.8.0 版本中用上它。

如果你正在使用 Ghost,你可以通過修改 config.js、并在production配置塊中增加 preloadHeaders 選項來啟用服務(wù)端推送。

  1. production: { 
  2.   url: 'https://my-ghost-blog.com'
  3.   preloadHeaders: 100, 
  4.   // ... 

Ghost 已經(jīng)為其用戶整理了一篇支持文檔

總結(jié)

使用 netjet,你的 Node.js 應(yīng)用也可以使用瀏覽器預(yù)加載技術(shù)。并且 CloudFlare 已經(jīng)使用它在提供了 HTTP/2 服務(wù)端推送了。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2017-09-07 12:35:39

前端JavascriptNode.js

2024-02-01 12:12:01

2022-08-28 16:30:34

Node.jsDocker指令

2011-07-26 11:07:08

JavaScript

2017-04-24 08:31:26

Node.jsExpress.jsHTTP

2022-08-22 07:26:32

Node.js微服務(wù)架構(gòu)

2021-10-03 15:02:50

HTTPNodejs

2021-10-21 08:59:17

技術(shù)HTTP攻擊

2018-08-23 16:18:59

2021-07-11 06:43:29

服務(wù)端Node路由

2016-10-18 16:45:20

JavaScript移動服務(wù)端

2013-03-28 14:54:36

2022-09-12 15:58:50

node.js微服務(wù)Web

2022-04-02 06:04:03

Node.js代碼緩存V8

2022-04-01 08:02:32

Node.js快照加速hooks

2023-06-30 23:25:46

HTTP模塊內(nèi)存

2014-09-12 10:35:09

Node.jsHTTP 206

2014-11-04 09:54:00

Node.jsWeb

2021-09-02 10:49:25

Node.jsPHP服務(wù)器開發(fā)

2015-03-10 10:59:18

Node.js開發(fā)指南基礎(chǔ)介紹
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美男人天堂 | 国内av在线 | 色性av| 欧美精品v国产精品v日韩精品 | 免费一区| 亚洲精品一二三 | 亚洲国产成人av好男人在线观看 | 免费同性女女aaa免费网站 | 精品视频一区二区三区在线观看 | 在线视频亚洲 | 日韩欧美成人一区二区三区 | 97国产精品| av电影一区二区 | 精品久久久久久亚洲综合网站 | 久久久久久久久久久久91 | 国产视频一二三区 | 一区二区三区国产 | 国产伦一区二区三区视频 | 国产成人jvid在线播放 | www.一区二区三区 | 九九热国产精品视频 | 国产福利91精品一区二区三区 | 国产99热精品 | 91在线观看网址 | 精品在线观看一区二区 | 亚洲国产精品久久久久婷婷老年 | 国产不卡在线播放 | 一道本在线 | 欧美欧美欧美 | 福利社午夜影院 | 国产精品久久久久久久7电影 | 久久久.com | 久久国产精品久久久久久 | 日本人做爰大片免费观看一老师 | 亚洲综合色丁香婷婷六月图片 | 精品久久国产视频 | 中文字幕在线网 | 日韩高清国产一区在线 | 国产小视频在线观看 | 久久夜夜| 黄色国产在线播放 |