SPA應用的流程是:利用
加載HTML
加載javascript(bundle.js)
執行javascript,開始請求接口
先建立和接口的HTTP/HTTPS連接(dns查詢/tcp握手/TLS鏈接)
發送請求header,獲取響應數據 ...
渲染數據,呈現給用戶
我們用Vue/React + Webpack打包的js動輒300KB以上,步驟2會消耗一點時間。如果在 步驟2 進行中時,同步執行 步驟4 建立連接,就能節約一點點時間。
尤其在移動端,建立連接的時間占了大頭,能省是省。
利用 <link rel="preconnect">
讓瀏覽器預先建立連接。
主流瀏覽器大多已支持:https://caniuse.com/#feat=link-rel-preconnect
做了一個簡單的webpack插件: https://github.com/joaner/html-webpack-preconnect-plugin
// $ npm install html-webpack-preconnect-plugin --save-dev var HtmlWebpackPreconnectPlugin = require('html-webpack-preconnect-plugin'); // webpack config { ... plugins: [ new HtmlWebpackPlugin({ filename: 'index.html', // set the preconnect origins preconnect: [ 'http://api1.example.com', 'http://api2.example.com', ] }), // enabled preconnect plugin new HtmlWebpackPreconnectPlugin(), ] }
這個插件做的事非常簡單,就是插入到<head>
里:
<!-- dist/index.html --> <head> ... <link rel="preconnect" href="http://api1.example.com"> <link rel="preconnect" href="http://api2.example.com"> </head>
我之前用HtmlWebpackPlugin
的模板實現,但是略微有點繁瑣,所以提取成了插件。
<!-- template.html --> <link rel="preconnect" href=<%= htmlWebpackPlugin.options.api1_origin %>>
相關推薦:
詳解webpack模塊及webpack3新特性
Webpack服務器端代碼打包實例詳解
webpack、vue、node實現單頁面代碼分享
以上就是webpack項目的網絡優化代碼分享的詳細內容,更多請關注php中文網其它相關文章!