本文要跟大家分享的是使用nodejs結合bigpipe實現非同步載入頁面的方案,非常的實用,也是以後前端效能優化的一個方向,希望大家能夠喜歡。
Bigpipe介紹
Facebook首創的一種減少HTTP請求的,首頁快速載入的的非同步載入頁面方案。是前端效能最佳化的一個方向。
BigPipe與AJAX的比較
AJAX主要是XMLHttpRequest,前端異步的向伺服器請求,取得動態資料加入網頁上。這樣的往返請求需要耗費時間,而BigPipe技術並不需要發送XMLHttpRequest請求,這樣就節省時間損耗。減少請求帶來的另一個好處就是直接減少伺服器負載。還有一個不同點就是AJAX請求前伺服器在等待。請求後頁面在等待。 BIGPIPE可以前後端並行工作也帶來了效率上的提升。
Bigpipe缺點
SEO問題。 Facebook的動態展現內容主要是面對顧客的個性專頁。對於SEO的要求並不高。而如果把BIGPIPE技術用到淘寶上的話SEO的問題就會明顯了,現在不確定百度對於這種動態頁面的搜尋支持度如何,其實在使用ANGULARJS動態綁定資料的時候也會有這方面的問題所以SEO有需求的頁面需要慎重考慮是否使用BIGPIPE技術。 (已知GOOGLE搜尋對於ANGULAR的SEO有優化。)至於百度麼-。 -看下圖就知道了
NODEJS實作
bigpipe.js頁面引入的js
##
var Bigpipe=function(){ this.callbacks={}; } Bigpipe.prototype.ready=function(key,callback){ if(!this.callbacks[key]){ this.callbacks[key]=[]; } this.callbacks[key].push(callback); } Bigpipe.prototype.set=function(key,data){ var callbacks=this.callbacks[key]||[]; for(var i=0;i<callbacks.length;i++){ callbacks[i].call(this,data); } }#app.js伺服器程式碼
var express = require('express'); var path = require('path'); var http = require('http'); var ejs = require('ejs'); var app = express(); app.set('port', process.env.PORT || 3000); app.use(express.static(path.join(__dirname, 'public'))); app.engine('.html', ejs.__express); app.set('view engine', 'html'); app.get('/index.html', function (req, res) { res.render('index', { title: "测试" }, function (err, str) { res.write(str) }) var Pagelets_list ={ pagelet1:false, pagelet2:false } var data = {is: "true"}; function is_end(Pagelets) { Pagelets_list[Pagelets]=true; for (x in Pagelets_list) { if(!Pagelets_list[x]){ return; } } res.end(); return; } function Pagelets(Pagelets) { res.write('<script>bigpipe.set("' + Pagelets + '",' + JSON.stringify(data) + ');</script>'); is_end(Pagelets) } setTimeout(function(){Pagelets("pagelet1");},1000); setTimeout(function(){Pagelets("pagelet2");},3000); }); http.createServer(app).listen(3000);index.html前端程式碼
<!doctype html> <html class="no-js"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <title>zchq88-bigpipe</title> <!-- Set render engine for 360 browser --> <meta name="renderer" content="webkit"> <!-- No Baidu Siteapp--> <meta http-equiv="Cache-Control" content="no-siteapp"/> <link href="//cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <p id="test1">loading......</p> <p id="test2">loading......</p> <script src="//cdn.bootcss.com/jquery/2.1.4/jquery.min.js"></script> <script src="//cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> <script src="//cdn.bootcss.com/angular.js/1.5.0-rc.0/angular.min.js"></script> <script src="/js/bigpipe.js"></script> <script> var bigpipe=new Bigpipe(); bigpipe.ready('pagelet1',function(data){ $("#test1").html("test1 ready"); }) bigpipe.ready('pagelet2',function(data){ $("#test2").html("test2 ready"); }) </script> </body> </html>
總結
Bigpipe技術其實具體實現需要伺服器的程式碼配合,在開發中我感覺功能佔20%,優化佔80%的工作量,優化的難度很多時候比開發還高。還需可能對全端的了解。所以現在nodejs作為前後端分離的中間層是一個我個人認為比較合理的一個解。如果前後端完成nodejs的中間層分離,Bigpipe技術的實作將會是前端可以獨立完成的一個最佳化。提高首屏載入時間。並且提高整個網頁的載入時間,對於瀏覽量的提升會帶來一定效果的。 以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網! 相關推薦:關於node.js基於fs模組對系統檔案及目錄進行讀寫操作的方法
關於Node.js連接postgreSQL並進行資料操作的介紹
以上是nodejs實作bigpipe非同步載入頁面的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具