日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[译] Node.js, Express.js 搭建 HTTP/2 服务器

發布時間:2025/3/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [译] Node.js, Express.js 搭建 HTTP/2 服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:Easy HTTP/2 Server with Node.js and Express.js
作者:Azat Mardan
代碼:http2-express


什么是 HTTP/2

現代互聯網的 TCP/IP 協議發布于1975年,這項技術在41年前是多么令人驚訝。自它發布開始大部分形式,我們使用 HTTP 和 后續接任者 HTTP/1.1 來實現客戶端和服務端的通訊。它能很不錯的傳輸 Web,但今時今日的開發者建立網站的方式已經發生了巨大的改變。存在各式各樣的外部資源鏈接例如圖片、CSS 文件、JavaScript 資源。資源的種類數量只會持續增長。

HTTP/2 是針對表現一直不錯的舊協議 HTTP 自從1991年發布以來這15年的第一次大的升級改動!它為優化現代瀏覽器而生。性能更加優越而且不用使用復雜的行為例如域名分片(通過多個域名發送資源)或者資源文件合并`(提供一個整合的大資源而不是多個小資源)

HTTP/2 是當前 web 的新標準,其雛形是 Google 的 SPDY 協議。當前已經被大多數主流瀏覽器支持,且很多網站已經通過該協議實現。例如訪問 Yahoo 的 Flickr 在使用的是 HTTP/2 協議(截圖時間為2016年7月).

HTTP/2 的優勢和注意事項

HTTP/2 和 HTTP/1.1 的使用沒什么區別,仍然可以在 body 中使用類 xml 的語法,使用 header 協議頭字段, 狀態碼, cookies, methods, URLs, 等等。開發者熟悉使用的東西都還可以繼續在 HTTP/2 使用。

HTTP/2的優勢如下:

  • 多路復用傳輸(Multiplexing):允許瀏覽器在單個TCP連接中包含多個請求,從而使瀏覽器能夠并行地請求所有的資源;

  • 服務器推送(Server push):服務器可以在瀏覽器知道需要該資源前,推送給瀏覽器(如:CSS、JS、Image),從而通過減少請求數量來加速頁面加載時間;

  • 流傳輸優先級(Stream priority):允許瀏覽器去控制資源的加載優先級,例如,瀏覽器先請求 HTML 渲染再去加載其他的 CSS 和 JS 文件;

  • 頭部壓縮(Header compression): HTTP/1.1 請求的頭部總是重復一樣的內容,而 HTTP/2 則強制對所有請求的頭部進行了去重壓縮;

  • 實際的強制加密(De facto mandatory encryption):雖然加密不是硬性要求的,但是大多數瀏覽器只支持 TLS(HTTPS) 上的 HTTP/2。

  • 雖然目前對于 HTTP/2 還不能完全滿足一些苛求,但是直到更好的技術出現以前,當前是一項明顯的技術進步。讓我們來看看,作為 Web 開發者需要了解的必要知識。大部分適用于 HTTP/1.1 的優化技巧在 HTTP/2 中變成多余的,其中一些甚至反而會影響 HTTP/2 上的網站性能,例如:

  • 資源文件合并;

  • 你也應該停止使用精靈圖(image sprites)、CSS和JS打包,因為只要其中一小部分有改動就會影響客戶端的緩存的作用;在 HTTP/2 協議上更好的方式是使用多個的小文件,而不是一個大文件。

  • 作者希望前端構建工具,如 Grunt 、 Gulp 、 Webpack 將會因此特性被放棄使用,他們使 Web 開發更高的復雜度,極高的學習曲線,以及管理項目的依賴關系。

  • 另一個適用于 HTTP/1.1 不適用于 HTTP/2 的是,域名分片(為了繞過TCP并行請求數量限制)。雖然它不一定在所有情況下有害,但對于 HTTP/2 的多路復用傳輸,這樣做也已經沒好處了。之所以建議不在 HTTP/2 使用域名分片,還因為每個域名會帶來額外的查詢負載。如果真的有需要,那么更好的方式是解析多個域名到同一個IP,而且保證你使用的是通配符證書或整合了多域名的證書,從而減少域名查詢的時間。

  • 若想了解更多關于 HTTP/2 的介紹,可以看看官網。

    Node.js 搭建 HTTP/2

    現在,讓我們看看怎么通過 Node.js 搭建 HTTP/2 服務器。

    部署證書

    創建一個新文件夾以及自己簽發的 SSL 證書。

    $ mkdir http2-express $ cd http2-express $ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048 ... $ openssl rsa -passin pass:x -in server.pass.key -out server.key writing RSA key $ rm server.pass.key $ openssl req -new -key server.key -out server.csr ... Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:California ... A challenge password []: ... $ openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt

    當你訪問服務器的時候,因為瀏覽器默認不信任自己簽發的證書,請確保選擇 “高級” 和 “繼續訪問 localhost (不安全)” 或者將 localhost 設置成不安全訪問的例外。

    初始化、依賴、入口

    通過 npm ,初始化項目 package.json ,安裝依賴 spdy 和 express :

    npm init npm i express spdy --save

    創建應用的入口文件 index.js ,主要是引用以及實例化

    const port = 3000 const spdy = require('spdy') const express = require('express') const path = require('path') const fs = require('fs')const app = express()

    定義 Express.js 的 route

    實現 Express.js 的 route

    app.get('*', (req, res) => {res.status(200).json({message: 'ok'}) })

    設置證書以及啟動 Server

    通過 fs.readFileSync() 讀取證書

    const options = {key: fs.readFileSync(__dirname + '/server.key'),cert: fs.readFileSync(__dirname + '/server.crt') }

    然后,設置證書選項到 Express 對象:

    spdy.createServer(options, app).listen(port, (error) => {if (error) {console.error(error)return process.exit(1)} else {console.log('Listening on port: ' + port + '.')}})

    最后,node . 啟動服務器

    檢查結果

    通過瀏覽器的開發者工具查看協議,就如剛剛我們查看 Yahoo 的 Flickr 協議一樣。

    可以看到,使用 Node.js 和 Express.js 配合庫 node-spdy 實現 HTTP/2 簡單易懂。大多數情況下,對你的業務代碼是基本不需要修改的,想必,你的網站也已經使用了 HTTPS/SSL (除非你的服務器只提供靜態資源,否則你應該使用安全的 HTTPS/SSL ),即使是不使用 HTTP/2 你也可以替換 HTTP/1.1 而使用 SPDY

    當然,在 Node.js 的大環境中,有很多的庫,不只是 node-spdy 提供 HTTP/2 實現,例如:node-http2

    結語

    HTTP/2 提供了更多更優的好處,而且不用使用復雜的優化技巧。開始享受 HTTP/2 給你帶來的這些好處。展望光明的未來!

    PS:
    本文源代碼地址在 http2-express
    我的博客

    總結

    以上是生活随笔為你收集整理的[译] Node.js, Express.js 搭建 HTTP/2 服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: av网站在线播放 | 亚洲视频一区在线播放 | 日韩一区二区毛片 | 182tv午夜 | 69视频在线播放 | 黄色片aa | 色婷婷视频 | 四川话毛片少妇免费看 | 日韩精品一卡 | 久久久国产打桩机 | 欧美,日韩,国产在线 | 久久精品久久精品 | 久久99国产综合精品免费 | 精品国产一区二区三区四区 | 国产精品久久久久久久久久辛辛 | 内地级a艳片高清免费播放 91在线精品一区二区 | 久久福利网站 | 老牛影视少妇在线观看 | 青青青视频在线 | 超碰人体 | 老司机深夜福利网站 | ,午夜性刺激免费看视频 | 国产三级国产精品 | 午夜精品久久99蜜桃的功能介绍 | 日韩视频在线观看二区 | 亚洲国产成人精品91久久久 | 18禁裸男晨勃露j毛免费观看 | 动漫一区二区三区 | av第下页| 亚洲小视频 | 91调教打屁股xxxx网站 | 性色av一区二区三区在线观看 | 男女黄床上色视频 | 青青草自拍视频 | 亚洲23p | 黄色片的网站 | 国产精品视频 | 四虎在线免费 | 国产深夜福利在线 | 欧美在线免费看 | 风间由美一区二区 | 91视频黄版| av大全在线 | 在线中文字幕视频 | 中文字幕女同女同女同 | 精品国产伦一区二区三区免费 | 貂蝉被到爽流白浆在线观看 | 男人的天堂久久久 | 另类老妇性bbwbbw图片 | 国产又粗又长又大视频 | 国产主播毛片 | 国产美女精品一区二区三区 | 天天干天天爱天天操 | 日韩国产小视频 | 黄色一级片黄色一级片 | 成人黄色激情网 | 天天拍夜夜拍 | 第四色视频 | 三上悠亚久久精品 | a级片在线免费观看 | 精品久久一区二区 | 好吊妞精品视频 | 精品久久久久久久 | 国产日韩免费视频 | 亚洲精品国产欧美在线观看 | 日韩av在线一区二区 | 羞辱狗奴的句子有哪些 | 美女被草视频在线观看 | 欧美成人精品 | 亚洲少妇第一页 | 色av吧 | 四虎永久免费 | av一级二级| 亚洲伦理久久 | 四虎www| 日韩第1页 | 青青伊人影院 | 在线免费观看黄色小视频 | 黄色在线视频播放 | 国产色视频一区二区三区qq号 | 男生桶女生肌肌 | 国产尤物在线观看 | 看av的网址 | 奇米影视av | 青青草偷拍视频 | 500部大龄熟乱视频 亚洲乱码精品 | 99精品视频一区二区 | 51久久久| 国产精品自拍视频一区 | 成人午夜又粗又硬又大 | 韩国精品在线观看 | 秋霞影院午夜 | 中文字幕第一页亚洲 | 91成人免费在线观看 | 三浦惠理子aⅴ一二三区 | 国产日本欧美在线观看 | 国产精品成人在线观看 | 亚洲www. | 亚洲国产精品视频在线观看 |