1. 程式人生 > >手把手,從無到有帶你用vue進行專案實戰 系列二(cdn、gzip效能加速篇)

手把手,從無到有帶你用vue進行專案實戰 系列二(cdn、gzip效能加速篇)

相關連結:

這裡寫圖片描述

一、前言

系列一中桃子叔叔介紹了使用iview-cli構建專案框架並基於框架進行的相關改造,主要包括:

  1. 路徑規範
  2. dev-server配置
  3. 啟用熱更新
  4. 封裝axios
  5. 解決跨域

二、問題

經過以上的改造,已經能夠滿足基本生產開發的需求了,執行

npm run dev

便可以檢視開發環境的頁面了。

執行

npm run build

便可以檢視生產環境的頁面,但是我們檢視dist檔案下的vendors.**********.js檔案大小有1.3M,這個發到線上又是讓人頭疼的一件事,雖然檔案不是很大,但是最少也要10多秒的時間載入,這顯然不是完美主義能接受的。

二、優化方案

桃子叔叔主要帶大家進行兩方面的優化

  • cdn加速
  • gzip配置

1、cdn加速

主要優化的模組是(以我個人專案為例)
我的專案中引入了以下模組vue vue-router vuex axios

引入cdn檔案
我使用的是bootcdn
1.1 頁面引入cdn檔案
首先修改index.html檔案

	<div id="app"></div>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/3.0.1/vue-router.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vuex/3.0.1/vuex.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>
    <script type="text/javascript" src="/dist/vendors.js"></script>
    <script type="text/javascript" src="/dist/main.js"></script>

然後是模版檔案index.ejs檔案

    <div id="app"></div>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/3.0.1/vue-router.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vuex/3.0.1/vuex.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>
    <script type="text/javascript" src="<%= htmlWebpackPlugin.files.js[0] %>"></script>
    <script type="text/javascript" src="<%= htmlWebpackPlugin.files.js[1] %>"></script>

1.2 刪除依賴

這些依賴以前是使用npm安裝,現在需要在專案檔案註釋掉(或直接刪除這些依賴),所有用到這些你需要替換的第三方依賴檔案的程式碼都需要刪除或註釋

首先修改main.js檔案

//import Vue from 'vue';
//import VueRouter from 'vue-router';
//import Vuex from 'vuex';

//Vue.use(VueRouter);
//Vue.use(Vuex);

然後修改webpack.base.config.js檔案,新增externals相關。

module.exports = {  
    externals: {
	    'vue': 'Vue',
	    'vue-router':'VueRouter',
	    "vuex":'Vuex',
	    'axios':'axios',
	  },
	  ......
 }

注意後面的名稱是改模組暴露出來的名稱。

2、開啟

主要是webpack裡compression-webpack-plugin模組的實現,
這個模組需要單獨安裝

npm install --save -dev compression-webpack-plugin

然後修改webpack.prod.config.js檔案

const CompressionWebpackPlugin = require('compression-webpack-plugin');
......
module.exports = merge(webpackBaseConfig, {
		......
		plugins: [
		......
		new CompressionWebpackPlugin({
	        asset: '[path].gz[query]',// 目標檔名
	        algorithm: 'gzip',// 使用gzip壓縮
	        test: new RegExp(
	            '\\.(js|css)$' // 壓縮 js 與 css
	        ),
	        threshold: 10240,// 資原始檔大於10240B=10kB時會被壓縮
	        minRatio: 0.8 // 最小壓縮比達到0.8時才會被壓縮
	    })
    ]
 });

修改伺服器的配置,如Nginx
找到conf目錄下的nginx.conf ,開啟gzip,並設定gzip的型別,如下

gzip  on;
gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

此時再次執行

npm run build

我們發現在下面紅框中多了幾個gz檔案
這裡寫圖片描述

由於服務端開啟了gzip訪問,重新部署伺服器

nginx -s reload 

發現js等需要壓縮等檔案請求也是壓縮的後的檔案了
這裡寫圖片描述

相關連結:

這裡寫圖片描述

相關推薦

手把手從無到有vue進行專案實戰 系列(cdngzip效能加速

相關連結: 一、前言 在系列一中桃子叔叔介紹了使用iview-cli構建專案框架並基於框架進行的相關改造,主要包括: 路徑規範 dev-server配置 啟用熱更新 封裝axios 解決跨域 二、問題 經過以上的改造,已經能夠滿足基本生產開發的需求了

【轉】手摸手vue擼後臺 系列(登錄權限)

userinfo ogr abort 變化 再次 狀態碼 quest -o 監聽 前言 拖更有點嚴重,過了半個月才寫了第二篇教程。無奈自己是一個業務猿,每天被我司的產品虐的死去活來,之前又病了一下休息了幾天,大家見諒。 進入正題,做後臺項目區別於做其它的項目,權限驗證與

手摸手vue擼後臺 系列(登入許可權)

前言 拖更有點嚴重,過了半個月才寫了第二篇教程。無奈自己是一個業務猿,每天被我司的產品虐的死去活來,之前又病了一下休息了幾天,大家見諒。 進入正題,做後臺專案區別於做其它的專案,許可權驗證與安全性是非常重要的,可以說是一個後臺專案一開始就必須考慮和搭建的基礎核心功能

手摸手vue實現後臺管理許可權系統及頂欄三級選單顯示

手摸手,帶你用vue實現後臺管理許可權系統及頂欄三級選單顯示 效果演示地址 專案demo展示 重要功能總結 許可權功能的實現 許可權路由思路: 根據使用者登入的roles資訊與路由中配置的roles資訊進行比較過濾,生成可以訪問的路由表,並通過router.addRoutes(store.gett

例項學習代理模式:靜態代理動態代理(JDKCGlib以及區別和優缺點

Spring AOP的核心技術就是動態代理,所以小編學習並整理了代理模式的材料,供大家一起學習。 1、代理模式滿足的三個必要條件: 兩個角色:執行者、被代理物件 這個過程必須要做,但是自己不能做或者不想做,交給專業的人(媒婆) 執行者必須拿到被代理物件的引用(需要知道你要什

註冊會計師Python進行探索性風險分析(一

專 欄 ❈Rho,Python中文社群專欄作者,現居深圳。知乎專欄地址:https://zhuanlan.zhihu.com/BecomingaDataScientist❈ 專案介紹 所謂探索性資料分析(Exploratory Data Analysis,以下簡稱EDA),是指對已有的資料(特別是調查

醬油cocos2dx3.0完成一款戰棋遊戲 (曹操傳(一地圖製作 1

這是醬油第一次寫部落格,所以如果有什麼寫的不好,大家多多海涵啊。那麼廢話就不多說了,直接進入正題吧。 製作一款戰棋遊戲,在醬油看來最大的難度便是 ai的設計以及 實現劇本對遊戲整體的控制,當然啦,這都是比較深的問題了,醬油會放到以後的章節來加以介紹。那麼現在就正式開始打醬油

0開始手把手Vue開發一個答題App01之專案建立及答題設定頁面開發

## 專案演示 [專案演示](https://kamiba.gitee.io/vue-quiz-app-show-version/) ## 專案原始碼 [專案原始碼](https://gitee.com/kamiba/vue-quiz) ## 配套講解視訊 [配套講解視訊](https://www.bi

0開始手把手Vue開發一個答題App

## 專案演示 [專案演示](https://kamiba.gitee.io/vue-quiz-app-show-version/) ## 專案原始碼 [專案原始碼](https://gitee.com/kamiba/vue-quiz) ## 教程說明 本教程適合對Vue基礎知識有一點了解,但不懂得綜合

月薪30k+專案分紅哥大教授探索“區塊鏈+AI”抓緊時間投簡歷吧!手慢...

每週日,「區塊鏈大本營」人才快報與你不見不散!在這裡,可以第一時間瞭解區塊鏈的行業動態、技術風向與人才需求。 如果你是求職者,請將個人簡歷以Word文件形式(統一格式"求職+姓名+目標公司+應聘職位+手機號")發至郵箱; 如果你是招聘者,請將職位資

佛爺Python視覺化分析 ”絕地求生1800萬遊戲資料“穩穩吃雞!

本文內容和程式碼實現基本轉自By datayx。筆者在此之上,做了內容完善和程式碼完善。 98k消音,瞭解一下~ 經常玩吃雞遊戲,我們現在來分析一下過去一年 1800萬條遊戲資料,看看有什麼套路幫我們吃到雞。 1. 資料集描述 做資料分析或者機器

十幾行程式碼Python批量實現txt轉xls方便快捷

前天看到後臺有一兄弟發訊息說目前自己有很多txt 檔案,領導要轉成xls檔案,問用python怎麼實現,我在後臺簡單回覆了下,其實完成這個需求方法有很多,因為具體的txt格式不清楚,當然如果是有明確分隔符的會更好處理些,可以直接把txt檔案轉成csv檔案,這樣可以用excel開啟後就是表格的樣式了,如果直接要

compositional到distributed監督到監督再到多工學習 —— 漫談句向量 Sentence Embedding

關於詞向量,word embedding,研究相對較早,存在多種表徵方式,目前 distributed 方式相對成熟,得到了廣泛應用。但從 word 向 sentence、paragraph、document擴充套件,卻仍處於探索階段,本文嘗試對目前主要的研究方

手摸手合理的姿勢使用 webpack 4(上

(點選上方公眾號,可快速關注)作者:華爾街見聞技術團隊 - 花褲衩segmentfault.co

手把手資料庫中介軟體Mycat+SpringBoot完成分庫分表

一、背景 隨著時間和業務的發展,資料庫中的資料量增長是不可控的,庫和表中的資料會越來越大,隨之帶來的是更高的磁碟、IO、系統開

golang--深入簡出golang的反射擼一個公用後臺查詢方法

一些基本方法 本篇不會介紹反射的基本概念和原理等,會從每個常用的方法入手,講解一些基本和進階用法,反射不太適合在業務層使用,因為會幾何倍的降低執行速度,而且用反射做出來的程式健壯度不高,一旦一個環節沒有處理好就會直接panic,影響程式的執行,但是在後臺上使用還是很適合的,可以極大的降低程式碼量,從繁複的增刪

老司機MaxCompute和表格存儲玩轉車聯網數據

tps 爆發 sqlserve 屬性 分庫 所有 spa 控制 定期 原文鏈接 “自動駕駛汽車”在近兩年頻頻出現於各大科技新聞頭條,自2012年谷歌獲得美國首個自動駕駛汽車許可證以來,國外各大知名汽車廠商如奔馳、沃爾沃、大眾、通用、豐田、日產、特斯拉等也紛紛宣布自己的自動駕

手把手EST進行固件降級

希捷固件降級範例型號: ST3600057SS 固件版本 EN03 為DELL EQL存儲設備用的硬盤固件,像這類使用非標準扇區字節數,又或者關閉硬盤寫入緩存的情況,是不能在普通PC上使用,或者表速度很慢,所以我們進行降級固件,讓其能在普通PC上正常使用。本文出自 “EST硬盤之家” 博客,請務必保留此出處

50k大牛告訴Python怎麼學10個特性快速瞭解python

前言 如果你是一個正在學習python的c、c++ or java程式設計師,又或者你是剛剛接觸python,剛剛開始學習python,那麼,請認真看完這10個語言特性,你會受益匪淺的。 新增小編python學習群865597862即可領取2018最新全套python零基礎入門

獨家 | 手把手Python進行Web抓取(附程式碼

作為一名資料科學家,我在工作中所做的第一件事就是網路資料採集。使用程式碼從網站收集資料,當時對我來說是一個完全陌生的概念,但它是最合理、最容易獲取的資料來源之一。經過幾次嘗試,網路抓取已經成為我的第二天性,也是我幾乎每天使用的技能之一。 在本教程中,我將介紹一個簡單的例子,說明如何抓取一個網站,