Vue 프로젝트 패키지,통합 및 압축 최적화 웹 페이지 응답 속도
웹 페이지 응답 속도 에 영향 을 주 는 요 소 는 매우 많다.예 를 들 어 요청 내용 이 너무 크 고 http 요청 횟수 가 너무 많 으 며 서버 자체 의 처리 요청 이 너무 오래 걸 리 고 JS 스 크 립 트 의 실행 시간 이 너무 길 며 브 라 우 저 환류 재 그림 등 이다.사이트 페이지 의 응답 속 도 는 사용자 체험 과 밀접 한 관 계 를 가지 고 사용자 가 당신 의 사 이 트 를 계속 방문 하 기 를 원 하 는 지 에 직접적인 영향 을 미친다.Vue 프로젝트 의 경우 가장 보편적 인 문 제 는 포 장 된 파일 이 너무 커서 불 러 오 는 시간 이 너무 길 어 질 수 있 습 니 다.서버 요청 처리 가 너무 오래 걸 리 고 js 스 크 립 트 를 실행 하 는 데 시간 이 너무 오래 걸 립 니 다.이 두 가지 코드 의 품질 과 서버 설정 관계 가 너무 무 겁 습 니 다.구체 적 인 프로젝트 와 코드 에 따라 최적화 해 야 합 니 다.오늘 우 리 는 요청 횟수 와 포장 후의 단일 파일 이 너무 큰 두 가지 측면 에서 웹 페이지 응답 속 도 를 최적화 해 야 합 니 다(이것 은 모든 전단 항목 에 적 용 됩 니 다).
1.요청 내용 이 너무 크다
프로젝트 를 포장 한 후에 우 리 는 포장 한 파일 vendors 와 app 파일 이 특히 너무 크다 는 것 을 자주 발견 할 수 있 습 니 다.그 중에서 app.js 파일 에는 프로젝트 의 각 페이지 의 논리 코드 가 놓 여 있 고 vendor.js 는 각 페이지 의 각 구성 요소 가 공용 하 는 코드 를 놓 습 니 다.프로젝트 의 복잡 도가 증가 함 에 따라 이 파일 의 크기 도 나날이 증가 하고 있다.대역 폭 이 제 한 된 상황 에서 이 두 파일 을 다운로드 하면 오래 기다 리 는 경우 가 많다.
해결 방안:
로 케 일 로드:분할 코드 블록Vue 는 구성 요 소 를 사용 하 는 곳 에서 Promise 를 사용 할 수 있 는 비동기 구성 요 소 를 지원 합 니 다.Promise 는 결국 resolve 를 통 해 구성 요소 대상 을 되 돌려 줍 니 다.웹 팩 의 동적 import 방식 은 코드 를 블록 으로 나 누 어 포장 하고 Promise(바로 비동기 구성 요소 에 필요 한 것)를 되 돌려 줍 니 다.경로 설정 표 에서 import 를 사용 하면 각 페이지 구성 요 소 를 서로 다른 코드 블록 으로 나 눈 다음 에 경로 가 방문 되 었 을 때 해당 하 는 구성 요 소 를 불 러 올 수 있 습 니 다.그러면 모든 내용 을 하나의 chunk 에 포장 하지 않 고'필요 에 따라 불 러 오기'를 하여 응답 속 도 를 크게 높 일 수 있 습 니 다.다음 그림 에서 보 듯 이 도입 경로 구성 요소:
CDN 도입
비 즈 니스 코드 는 자주 업 데 이 트 됩 니 다.브 라 우 저가 가능 한 한 오랫동안 정적 파일 을 캐 시 할 수 있 도록 라 이브 러 리 코드 와 비 즈 니스 코드 를 함께 묶 으 면 라 이브 러 리 코드 는 비 즈 니스 코드 의 업데이트 에 따라 업 데 이 트 됩 니 다.브 라 우 저 에 캐 시 되 어 있 지 않 습 니 다.저 희 는 캐 시 를 이용 하여 브 라 우 저 트 래 픽 을 줄 이 고 사용자 브 라 우 저 로 딩 속 도 를 높이 기 를 원 하기 때문에 따로 나 누 어 포장 합 니 다.일반적으로 제3자 패 키 지 는 script 도입 방안 이 있 습 니 다.포장 할 때 제3자 패 키 지 를 만 드 는 것 을 무시 한 다음 에 템 플 릿 에 해당 하 는 가 져 오기 링크 를 추가 합 니 다.
우선 프로젝트 루트 디 렉 터 리 에 vue.config.js 를 만 들 필요 가 없습니다.
구체 적 인 코드 는 다음 과 같다.
const cdn = {
//
externals: {
vue: 'Vue',
"element-ui": "ELEMENT",
'vue-router': 'VueRouter',
vuex: 'Vuex',
axios: 'axios',
moment: "moment",
echarts: "echarts"
},
// cdn
js: [
'https://cdn.bootcss.com/vue/2.6.10/vue.runtime.min.js',
'https://cdn.bootcss.com/vue-router/3.1.2/vue-router.min.js',
'https://cdn.bootcss.com/vuex/3.1.1/vuex.min.js',
'https://cdn.bootcss.com/axios/0.19.0/axios.min.js',
'https://cdn.bootcss.com/moment.js/2.24.0/moment.min.js',
'https://cdn.bootcss.com/echarts/3.7.1/echarts.min.js',
"https://cdn.bootcdn.net/ajax/libs/element-ui/2.8.2/index.js",
],
css: ["https://unpkg.com/[email protected]/lib/theme-chalk/index.css"],
}
module.exports = {
publicPath: '/CRM/dist/',
// publicPath: './',
chainWebpack: config => {
config.plugin('html').tap(args => {
args[0].cdn = cdn
return args
})
config.plugins.delete('prefetch')
},
//
configureWebpack: {
externals: cdn.externals
},
}
그리고 pulic/index.html 템 플 릿 의 해당 위치 에 추가 합 니 다.
// css ,script , ,config cdn ,
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
<link href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" rel="external nofollow" rel="stylesheet">
<!-- <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>" crossorigin="anonymous"></script> -->
<% } %>
CDN 을 사용 하면 포장 속 도 를 높 일 수 있다 는 또 다른 장점 도 있다.압축 요청 자원
일반적으로 저 희 는 서버 에 배치 되면 nginx 를 사용 하여 프 록 시 서버 를 만 들 고 모든 요청 은 nginx 를 통 해 전달 합 니 다.nginx 설정 을 통 해 gzip 을 열 수 있 습 니 다.
server {
gzip on;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
}
위의 설정 을 통 해 브 라 우 저가 서버 에 자원 을 요청 할 때마다 서버 는 먼저 자원 을 압축 한 후에 브 라 우 저 에 게 되 돌려 주 고 브 라 우 저 는 받 은 후에 압축 을 풀 어 처리 합 니 다.이렇게 하면 정적 자원 의 다운로드 속 도 를 크게 높 일 수 있다.그러나 또 하 나 는 브 라 우 저 가 서버 에 요청 할 때마다 서버 에서 압축 작업 을 한 번 씩 수행 합 니 다.요 구 량 이 많 을 때 이 작업 을 압축 하 는 것 도 서버 의 응답 속도 에 영향 을 줄 수 있 기 때문에 우 리 는 직접 포장 할 때 파일 을 압축 패키지 로 포장 할 수 있 습 니 다.이렇게 하면 서버 가 자주 포장 하지 않 아 도 된다.
설치 의존:compression-webpack-plugin
npm install compression-webpack-plugin --save-dev
vue.config.js 수정:
const CompressionPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i;
module.exports = {
publicPath: './',
productionSourceMap: false,
configureWebpack: {...},
chainWebpack: config => {
config.resolve.alias.set('@', resolve('src'));
if (process.env.NODE_ENV === 'production') {
config.plugin('compressionPlugin')
.use(new CompressionPlugin({
filename: '[path].gz[query]',
algorithm: 'gzip',
test: productionGzipExtensions,
threshold: 10240,
minRatio: 0.8,
deleteOriginalAssets: true
}));
}
},
};
nginx 설정
server {
gzip_static on;
gzip on;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
}
1.http 요청 횟수 가 너무 많 습 니 다.모든 일 에는 정도 가 있다.즉,우리 가 말 하 는 것 은 극 에 달 하면 반드시 반대 하 는 것 이다.우 리 는 필요 에 따라 불 러 오고 코드 를 분할 하여 포장 한 후에 프로젝트 가 점점 커지 고 모듈 이 점점 많아 질 때 프로젝트 를 포장 한 후에 우 리 는 많은 파일 을 생 성 할 것 이라는 것 을 알 게 될 것 이다.전단 성능 에 있어 서 모든 파일 이 더 작 아 졌 지만 더 많은 네트워크 연결 구축 과 닫 기 비용 을 의미 할 수 있 으 므 로 전단 최적화 실천 에 서 는 파일 수량 과 단일 파일 크기 사이 의 균형 이 필요 합 니 다.웹 팩 에서 제공 하 는 플러그 인 MinChunk SizePlugin 을 이용 하여 minChunk Size 보다 작은 chunk 를 합 쳐 chunk 부 피 를 지정 한 크기 제한 이상으로 유지 할 수 있 습 니 다.
해결 방안:
vue.config.js 설정
module.exports = {
publicPath: './',
productionSourceMap: false,
configureWebpack: {
plugins: [
new webpack.optimize.MinChunkSizePlugin({
minChunkSize: 10000 // Minimum number of characters
})
]
},
}
상기 작업 을 통 해 우 리 는 포 장 된 파일 을 합 리 적 인 크기 와 수량 범위 내 에서 제어 하고 ngnix 설정 에 맞 춰 gzip 를 열 수 있 습 니 다.기본적으로 대부분의 vue 단일 페이지 응용 을 해결 할 수 있 습 니 다.처음으로 불 러 오 는 대기 시간 이 너무 긴 문 제 를 해결 할 수 있 습 니 다.총결산
Vue 프로젝트 패키지,통합 및 압축 최적화 웹 페이지 응답 속도 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Vue 프로젝트 패키지,통합 및 압축 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 사랑 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.