日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue項目打包壓縮的實現(讓頁面更快響應)

瀏覽:176日期:2023-02-01 15:55:44

影響網頁響應速度的因素有很多,例如:http請求次數太多、服務器本身處理請求太久、請求內容太大、JS腳本執行耗時過長、瀏覽器回流重繪等。網站頁面的響應速度與用戶體驗息息相關,直接影響到用戶是否愿意繼續訪問你的網站。對于Vue項目而言,最普遍的問題可能在于打包后的文件太大,導致加載時間過長。

我的一個小項目,僅有三四個頁面,但因為服務器帶寬太小了,加載時間過長的問題尤為明顯,于是采用路由懶加載和gzip壓縮的方式優化了一下,訪問速度得到了顯著提升。

一、路由懶加載:分割代碼塊

Vue支持異步組件,即可以在使用組件的地方使用一個Promise,Promise最終會通過resolve回傳一個組件對象。而webpack的動態import的方式可以讓代碼分塊進行打包,并且返回一個Promise(正是異步組件所需要的)。在路由配置表里使用import可以將各個頁面組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應的組件,這樣就避免將所有內容打包在一個chunk里,從而“按需加載”,大大提高響應速度。

沒有使用動態加載的路由配置方式:

// router.jsimport VueRouter from ’vue-router’import Vue from ’vue’Vue.use(VueRouter)import Home from ’@/pages/Home’import Tree from ’@/pages/Tree’import SearchHighlight from ’@/pages/SearchHighlight’import Watermark from ’@/pages/Watermark’export default new VueRouter({ routes: [ { path: ’/’, component: Home, children: [ { path: ’tree’, name: ’Tree’, component: Tree }, { path: ’search-highlight’, name: ’SearchHighlight’, component: SearchHighlight }, { path: ’watermark’, name: ’Watermark’, component: Watermark } ] } ]})

執行yarn build(或npm run build)打包,查看dist文件夾下的js和css:

Vue項目打包壓縮的實現(讓頁面更快響應)

可以看到打包后js和css下各有兩個文件,其中chunk-vendors文件包含了所有頁面js或者css文件,大小分別為769K、270K。現在修改路由配置使用動態加載組件的方式打包,來看一下打包的文件是怎樣的。

使用 () => import(’xxx’)的形式引入組件:

// router.jsimport VueRouter from ’vue-router’import Vue from ’vue’Vue.use(VueRouter)export default new VueRouter({ routes: [ { path: ’/’, component: () => import(’@/pages/Home’), children: [ { path: ’tree’, name: ’Tree’, component: () => import(’@/pages/Tree’) }, { path: ’search-highlight’, name: ’SearchHighlight’, component: () => import(’@/pages/SearchHighlight’) }, { path: ’watermark’, name: ’Watermark’, component: () => import(’@/pages/Watermark’) } ] } ]})

執行yarn build(或npm run build)打包,查看dist文件夾下的js和css:

Vue項目打包壓縮的實現(讓頁面更快響應)

js和css文件夾下各多出來了4個chunk-*文件,剛好對應我們動態引入的4個組件,這樣在我們訪問到某個頁面,才會加載頁面對應的chunk-*.js和chunk-*.css。觀察文件大小,核心的JS文件chunk-venders大小從769K降低到了725K,因為我的4個頁面代碼都非常簡單,看起來優化效果不大,然而在一個頁面很多的大型項目中,優化效果會非常明顯,CSS部分也是如此。

二、壓縮請求資源

1. 原理介紹

日常我們在使用網盤的時候,上傳一個很大的文件夾肯定很慢,這時候我們會把它壓縮成一個壓縮包,需要下載的時候下載下來解壓就可以了,這樣大大節省了上傳和下載的時間。同樣的原理可以用于網絡請求,當我們向服務器請求一個資源時,比如js或者css文件,服務器將文件壓縮,然后返回到瀏覽器,瀏覽器操作解壓之后即可使用。

首先瀏覽器在發送請求的時候,會通過請求頭Accept-Encoding告知服務器,本瀏覽器支持哪些編碼格式的資源。打開瀏覽器的network,查看當前網頁的某個請求的請求頭:

Vue項目打包壓縮的實現(讓頁面更快響應)

Accept-Encoding的值表示瀏覽器支持gzip生成的編碼格式或者deflate壓縮算法生成的編碼格式,這就告訴服務器,如果可以把該請求的資源用這兩個方法壓縮一下給我也是可以的。Accept-Encoding可能還會有compress壓縮、identity不壓縮的默認格式。

如果服務器對資源進行壓縮編碼了,它就會通過響應頭Content-Encoding告知當前請求用了什么編碼格式,當然如果服務器沒干這事,則不會返回這個響應頭,比如某個請求用gzip壓縮了返回的內容:

Vue項目打包壓縮的實現(讓頁面更快響應)

2. 服務器配置

一般我們部署到服務器會使用nginx來做代理服務器,所有的請求都通過nginx轉發,這里演示一下nginx配置gzip壓縮文件后再返回。配置前先看看示例項目發布到線上的請求情況:

Vue項目打包壓縮的實現(讓頁面更快響應)

可以看到之前生成的chunk-vendors文件,大小725K,請求時間7.10秒,其中下載時間7.05秒,太慢了。配置一下nginx,打開gzip:

server { gzip on; gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;}

這個配置作用是,當nginx服務器返回gzip_types中列出的內容類型時,先使用gzip進行壓縮(當然,前提是請求方支持gzip),執行sudo nginx -s reload讓該配置生效,此時刷新剛才的頁面看一下效果:

Vue項目打包壓縮的實現(讓頁面更快響應)

同樣的一個請求,請求內容的大小變成了216K,而下載時間直接降低到了1s多,效果顯著!nginx還有gzip的其它配置項,比如可以用gzip_comp_level可以控制壓縮率(當然壓縮率更高可能意味著更大的服務器消耗),有興趣的同學可以查看nginx文檔。

3. webpack打包時直接使用gzip壓縮

上一步驟中,返回內容是在請求服務器的時候使用gzip進行壓縮的。這樣存在的問題時,對于同一個資源的不同請求,反復壓縮,這無疑會增加服務器的CPU和內存消耗。使用webpack的話,可以直接用compression-webpack-plugin插件對我們的代碼進行壓縮。先安裝compression-webpack-plugin到dev依賴:

// yarn安裝yarn add compression-webpack-plugin -D// 或npmnpm install compression-webpack-plugin --save-dev

簡單配置,更多配置可了解官方文檔:compression-webpack-plugin:

const CompressionPlugin = require(’compression-webpack-plugin’)module.exports = { // ... configureWebpack: { plugins: [ new CompressionPlugin({ test: /.(js|css)?$/i, // 哪些文件要壓縮 filename: ’[path].gz[query]’, // 壓縮后的文件名 algorithm: ’gzip’, // 使用gzip壓縮 minRatio: 1, // 壓縮率小于1才會壓縮 deleteOriginalAssets: true // 刪除未壓縮的文件,謹慎設置,如果希望提供非gzip的資源,可不設置或者設置為false }) ] }}

打包一下看看dist下的js和css文件夾,現在文件都被壓縮成了.gz:

Vue項目打包壓縮的實現(讓頁面更快響應)

經過壓縮之后chunk-vendors僅有176K,比起原始的725K,壓縮了近80%。像圖片、字體之類的也可以用這個方法進行壓縮,只要修改test配置項的正則表達式匹配這類文件即可。不過現在,還需要在nginx服務器配置一下靜態壓縮:

server { gzip on; gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; gzip_static on;}

gzip_static設置為on之后,這樣在訪問資源的時候,如果存在“資源路徑.gz”的文件,則會直接返回該文件,其優先級高于動態的gzip?,F在訪問一下頁面:

Vue項目打包壓縮的實現(讓頁面更快響應)

如果把鼠標懸指到chunk-vendors的size上,可以看到提示“176KB transfered over network, resource size: 724K”。如果你的項目出現請求資源文件太大,可以試試gzip之類的壓縮手段,相信有立竿見影的效果。

到此這篇關于Vue項目打包壓縮的實現(讓頁面更快響應)的文章就介紹到這了,更多相關Vue項目打包壓縮內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
999精品色在线播放| 精品一区二区三区在线观看视频| 宅男在线一区| 亚洲tv在线| 丝袜诱惑一区二区| 亚洲精品无吗| 高清久久精品| 亚洲一区二区免费在线观看| 欧美国产视频| 国产亚洲高清视频| 美女视频黄免费的久久| 蜜臀av免费一区二区三区| 日本伊人久久| 国产中文在线播放| 亚洲精选91| а√在线中文在线新版| 亚洲精品一二| 99精品国产一区二区三区| 国产日韩一区二区三区在线| 欧产日产国产精品视频| 91国内精品| 一区在线免费| 国产videos久久| 亚洲91网站| 99视频精品全部免费在线视频| 日韩有吗在线观看| 久久久久久久久99精品大| 国产精品久久久久久久免费软件| 亚洲精品国产偷自在线观看| 久久尤物视频| 日韩国产欧美在线视频| 2023国产精品久久久精品双| 麻豆精品视频在线| 日韩中文字幕一区二区高清99| 国产99亚洲| 高清一区二区| 国产精品久久久久久久久久妞妞 | 午夜精品福利影院| 久久亚洲专区| 国产精品99久久精品| 青青国产精品| 日韩精品一区第一页| 久久国产成人午夜av影院宅| 国内精品伊人| 国产欧美日韩在线一区二区| 综合国产精品| 伊人精品在线| 激情综合自拍| 亚洲黄色中文字幕| 精品中文在线| 国产精品.xx视频.xxtv| 日韩av在线免费观看不卡| 久久福利一区| 黄色日韩在线| 亚州av乱码久久精品蜜桃| 久久久久网站| 中文字幕在线官网| 国产精品www994| 国产精品中文| 欧美亚洲网站| 日本成人在线一区| 69精品国产久热在线观看| 亚洲综合色婷婷在线观看| 在线亚洲成人| 亚洲中字黄色| 久久国产精品亚洲77777| 欧美午夜不卡| 欧美激情另类| 亚洲天堂av影院| www.com.cn成人| 国产精品国产三级国产在线观看| 国产精品任我爽爆在线播放 | 国产成人在线中文字幕| 国产精品久一| 美女精品久久| zzzwww在线看片免费| 日韩高清欧美| 免费污视频在线一区| 99热精品久久| 女人天堂亚洲aⅴ在线观看| 最新亚洲一区| 亚洲制服一区| 国产精品xxx| 日韩av在线播放网址| 国产精品国产三级国产在线观看| 水蜜桃久久夜色精品一区| 中文字幕系列一区| 亚洲综合精品| 日韩有吗在线观看| 国产精品久av福利在线观看| 久久精品三级| 日韩av专区| 蜜桃一区二区三区| 蜜臀久久99精品久久久久久9| 午夜久久av | 蜜臀精品久久久久久蜜臀| 日本不卡视频在线| 国产欧美88| 国产理论在线| 99国产精品视频免费观看一公开 | 久久在线91| 日韩中文视频| 尤物网精品视频| 亚洲精品精选| 国产精品igao视频网网址不卡日韩 | 国产伦精品一区二区三区视频 | 亚久久调教视频| 国产精品毛片aⅴ一区二区三区| 成人精品高清在线视频| 久久中文字幕av一区二区不卡| 亚洲精一区二区三区| 国产精品天堂蜜av在线播放| 快播电影网址老女人久久| 国产亚洲精品v| 日韩av黄色在线| 国产精品久久久久蜜臀 | 日韩综合小视频| 精品久久电影| 亚洲国产不卡| 国产日韩视频在线| 日本精品影院| 伊人精品久久| 红杏一区二区三区| 99视频+国产日韩欧美| 欧美日韩亚洲一区在线观看| 中文av在线全新| 男女男精品视频网| 精品美女久久| 视频一区在线播放| 精品三区视频| 免费在线观看不卡| 激情不卡一区二区三区视频在线| 亚洲在线电影| 久久男人av| 性一交一乱一区二区洋洋av| 国产精品17p| 免费视频久久| 色综合五月天| 91麻豆精品激情在线观看最新| 亚洲黄色免费av| 日韩精品久久理论片| 91精品精品| 国产精品啊啊啊| 久久一二三区| 黄色在线网站噜噜噜| 日本亚洲视频| 91精品蜜臀一区二区三区在线| 亚洲精品韩国| 日韩深夜视频| 人人爱人人干婷婷丁香亚洲| 久久激情一区| 麻豆91精品91久久久的内涵| 99热精品在线| a国产在线视频| 日韩av不卡一区二区| 美女毛片一区二区三区四区| 精品久久电影| 国产欧美另类| 蜜桃视频第一区免费观看| 日韩在线观看| 美女精品视频在线| 五月亚洲婷婷 | 欧美国产91| 国产成人精品三级高清久久91| 亚洲精品在线a| 亚洲性图久久| 蜜桃成人精品| 国产成人精品福利| 国产精品免费99久久久| 视频一区二区国产| 欧美日韩精品一区二区视频| 麻豆成人在线观看| 国产毛片一区二区三区| 天海翼亚洲一区二区三区| 中文欧美日韩| 亚洲五月婷婷| 亚洲精品**中文毛片| 久久免费影院| 国产欧美日韩| 亚洲人成精品久久久| 99国产精品久久久久久久成人热| 91精品韩国| 午夜影院一区| 成人在线免费观看91| 精品丝袜久久| 欧美精品成人| 老鸭窝一区二区久久精品| 国产精品永久| 国产日韩中文在线中文字幕| 日本成人在线一区| 亚洲欧洲国产精品一区| 日韩中文字幕亚洲一区二区va在线 | 亚洲精品日本| 亚洲欧美日韩国产一区| 欧美日韩国产精品一区二区亚洲| 久久蜜桃精品| 99久久婷婷| 国产精品av一区二区| 免费观看不卡av| aa国产精品|