F1V3.0-3 前端开发问题之解决之道
来源:互联网 发布:苹果设计软件sketch 编辑:程序博客网 时间:2024/05/17 23:22
上一篇博文前端开发主要问题说到前端开发主要有三大问题:调试问题、缓存问题和性能问题,针对这几个问题我们逐一探讨一下解决之道。
1 调试问题
在平台2.x中,前端页面主要由jsp组成,前端功能作为一个osgi模块纳入到整个osgi容器中管理,这就导致了任何一点修改都需要进行updm以后才能生效,导致了调试的麻烦。
为了解决这个问题,前端页面开发需要回归到单纯的页面开发。
1、页面静态化:页面不包括任何动态元素,页面就是页面,只是数据展示和交互。和后台的所有通信通过ajax实现。
2、使用nginx作为Web服务器
完成这两步,前端开发回归到单纯的页面开发,可以使用任何页面开发工具,如sublime,webStorm等,实现了页面修改后能够及时刷新,避免了updm的问题。
2 缓存问题
缓存问题的由来及解决方案请参考博客前端集成解决方案
F1平台采用博文中的方式解决缓存问题:
- 使用文件内容hash后生成版本号,每次只对有改变的文件生成新的版本
- 发布前使用webpack统一打包,统一处理版本问题,不改变开发过程。 -
3 性能问题
浏览器请求处理流程如下图:
主要有下列优化方式:
减少http请求
http协议是无状态的应用层协议,意味着每次http请求都需要建立通信链路、进行数据传输,而在服务器端,每个http都需要启动独立的线程去处理。这些通信和服务的开销都很昂贵,减少http请求的数目可有效提高访问性能。
减少http的主要手段是合并CSS、合并javascript、合并图片。将浏览器一次访问需要的javascript和CSS合并成一个文件,这样浏览器就只需要一次请求。图片也可以合并,多张图片合并成一张,如果每张图片都有不同的超链接,可通过CSS偏移响应鼠标点击操作,构造不同的URL。
合理设置 HTTP缓存
缓存的力量是强大的,恰当的缓存设置可以大大的减少 HTTP请求。详见上一部分
启用压缩
在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效减少通信传输的数据量。如果可以的话,尽可能的将外部的脚本、样式进行合并,多个合为一个。文本文件的压缩效率可达到80%以上,因此HTML、CSS、javascript文件启用GZip压缩可达到较好的效果。但是压缩对服务器和浏览器产生一定的压力,在通信带宽良好,而服务器资源不足的情况下要权衡考虑。
字体图标
使用字体图标代替常用的图标,这样可以一次性把所有的图标请求下来,而且字体图标的尺寸比正常图标小很多。
懒加载
懒加载是指只请求当前需要展示的资源,其他资源在使用时进行下载。这样能有效减少首次加载的请求数和数据量。如:轮播图只下载第一幅图,Tab页只加载当前展示的内容等。
减少cookie传输
一方面,cookie包含在每次请求和响应中,太大的cookie会严重影响数据传输,因此哪些数据需要写入cookie需要慎重考虑,尽量减少cookie中传输的数据量。另一方面,对于某些静态资源的访问,如CSS、script等,发送cookie没有意义,可以考虑静态资源使用独立域名访问,避免请求静态资源时发送cookie,减少cookie传输次数。
- F1V3.0-3 前端开发问题之解决之道
- F1V3.0-15 前端开发环境搭建
- F1V3.0 F1平台2.X版本前端开发的主要问题
- F1V3.0-1 单体应用的硬伤及解决之道
- F1V3.0-10 前端功能介绍
- F1V3.0-图形-前端绘图库简介
- F1V3.0-13 UI模块开发规范
- F1V3.0-12 微服务开发规范
- F1V3.0-14 微服务开发环境
- F1V3.0-24 UI前端模块的发布及部署
- F1V3.0-22 前端旧版本升级方式
- F1V3.0-18 快速开发一个UI模块
- F1V3.0-11 开发规范——常规模式
- F1V3.0-16 快速开发一个微服务
- F1V3.0-17 微服务常用功能开发
- F1V3.0-20 UI模块常用功能开发
- F1V3.0-图形-前端如何快速搭建一个地图相关的应用
- JAVA自学之路 五:问题解决之道
- MongoDB--MapReduce分布统计s
- 对庄重有所把持
- java高阶与数据库小结
- window.onload与jQuery的ready的区别
- vue组件eleme 时间选择器问题
- F1V3.0-3 前端开发问题之解决之道
- Java初级第三天
- SOUI中使用SSendMessage
- Android开发中常用的工具整理
- 'objc_unretainedObject' is unavailable:use a (__bridge id) cast instead
- MyBatis学习(一)之一对一关联映射查询
- 类、构造方法方法的调用对象创建实例(1)
- 解决IDEA开发JavaWeb项目修改了HTML或Servlet/JSP后刷新浏览器无法及时显示修改后的页面的问题
- linux权限之su和sudo的区别