Ionic进行PC端Web开发时通过脚本压缩提高第一次加载效率
注意,本文中的描述仅适用于基于Ionic进行PC端的Web开发,如果是手机端的开发,可以尝试仅使用UglifyJS2进行压缩,是否会有提高请自行验证,至少文件小了加载速度会快。_
1. 问题
1.1. 问题上下文描述:
- 基于Ionic进行PC端的Web应用开发;
- 使用Tomcat作为最终服务发布容器。
1.2. 问题描述:
编译后main.js的大小为4-6MByte。(集成第三方控件前4M左右,集成后6M左右),导致第一次加载时速度较慢。
2.解决方案
经过分析,main.js有很大的压缩空间:
- 首先,其没有进行代码级别的研发,可以通过
UglifyJS2进行代码级别的压缩; - 其次,可以利用浏览器的特性,进行gzip压缩。
经验证原本6MByte左右的文件,压缩后成了500KByte左右,极大提高了加载效率。
3. 具体操作
3.1. 安装并使用UglifyJS2进行代码级别的压缩:
3.1.1. 安装UglifyJS2
首先保证已经安装了nodejs和npm
npm install uglify-js -g
3.1.2. 代码级压缩
uglifyjs main.js -o main.min.js
通过上面的压缩命令,生成的main.min.js大约是原来的一半3MByte左右。
3.2. 使用gzip进一步压缩
首先到gzip官网下载对应命令行的安装包。
解压后,可以在环境变量中进行配置,方便后续操作。
然后通过如下命令进行gzip压缩:
gzip -9 -S gz main.min.js
压缩后会生成一个名为main.min.jsgz的文件,好了可以看到这个文件只有500KByte左右,我这里是577KByte。
压缩后,就是使用了,基于Tomcat我们增加过滤器,对访问main.js的请求都转发给main.min.jsgz。
3.3. 增加过滤器进行请求转发
本部分基于Servlet3.0以上支持的注解方式增加:
package com.telchina.workmanage.common.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet Filter implementation class JSRequestFilter
*/
@WebFilter(filterName="JSRequestFilter",urlPatterns={"/build/main.js"})
public class JSRequestFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(request instanceof HttpServletRequest){
this.doFilter((HttpServletRequest)request, (HttpServletResponse)response, chain);
}
else{
chain.doFilter(request, response);
}
}
public void doFilter(HttpServletRequest request, HttpServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(request.getRequestURI().endsWith("main.js")){
response.addHeader("Content-Encoding", "gzip");
request.getRequestDispatcher("/build/main.min.jsgz")
.forward(request, response);
}
else{
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
}
}
OK了,感受一把修改后飞一般的速度吧。O(∩_∩)O~~
Ionic进行PC端Web开发时通过脚本压缩提高第一次加载效率的更多相关文章
- web开发的性能准则(减少页面加载时间方面)
准则(概述) 减少 HTTP 请求 使用CDN加速 避免空的src或href属性值 增加过期头 启GZIP压缩 把css文件放到头部 把javascript放到尾部 避免使用css表达式 删除不使用的 ...
- Web前端性能优化总结——如何提高网页加载速度
一.提高网页加载速度的必要性 国际知名的一组来自Jupiter Research的数据显示:购物者在访问网站过程中的不满会导致销售损失和品牌受损,其中 77%的人将不再访问网站 ,62%的人不再从该网 ...
- 移动端web开发的一些知识点
整理一下自己平时移动端web开发中遇到的问题,也参考一下前辈的一些总结 1.最常见的要数1像素边框了 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在dpr=2的retina屏下会显示成 ...
- 移动端web开发总结
前一个星期实战完一个PC端的基于HTML+CSS的项目,这几天则接触了移动端的开发,同样也是在HTML+CSS的基础上完成.虽然第一次接触移动端的开发,但在开发过程中,我也是按照PC端的开发步骤来进行 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 无线端web开发学习总结
无线web开发之前要做一些准备工作:一.必需的reset样式库1.其中的重点是盒模型box-sizing:由原来pc端的content-box改为border-box. *, *:before, *: ...
- 移动端web开发技巧(转)
原文链接:http://liujinkai.com/2015/06/06/mobile-web-skill/ 移动端web开发技巧 这是一个最好的时代,因为我们站在潮流中:但也是一个最坏的时代,因为我 ...
- 手摸手带你学移动端WEB开发
HTML常用标签总结 手摸手带你学CSS HTML5与CSS3知识点总结 手摸手带你学移动端WEB开发 好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/Ro ...
- 移动端 Web 开发前端知识整理
文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...
随机推荐
- 和我一步步部署 kubernetes 集群
和我一步步部署 kubernetes 集群 本系列文档介绍使用二进制部署最新 kubernetes v1.6.1 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群: 在部署的过程中, ...
- ArrayList,LinkedList的对比
ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要. 实现方式 ArrayList的内部采用集合的方式存储数据 唯一需 ...
- 从Chrome源码看JS Array的实现
.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } .crayon-line spa ...
- Map的迭代
public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Int ...
- Centos7完全分布式搭建Hadoop2.7.3
(一)软件准备 1,hadoop-2.7.3.tar.gz(包) 2,三台机器装有cetos7的机子 (二)安装步骤 1,给每台机子配相同的用户 进入root : su root ---------& ...
- [No0000E9]Microsoft Help Viewer 2.3绿色版
今天没事,提取了一下2017的Microsoft Help Viewer 2.3绿色版,自测没发现什么问题,有问题请后补. 下载地址:http://files.cnblogs.com/files/Ch ...
- iOS·UIKit & Foundation框架—Annotations & Category注解工具类
- oracle 创建用户并赋权 清空用户表
create user BUSM identified by BUSM; grant connect,resource,dba to BUSM; grant select any table to B ...
- 【lucene系列学习四】使用IKAnalyzer分词器实现敏感词和停用词过滤
Lucene自带的中文分词器SmartChineseAnalyzer不太好扩展,于是我用了IKAnalyzer来进行敏感词和停用词的过滤. 首先,下载IKAnalyzer,我下载了 然后,由于IKAn ...
- hdu2444二分图最大匹配+判断二分图
There are a group of students. Some of them may know each other, while others don't. For example, A ...