Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

前端性能优化总结 #9

Open
Roe-Tian opened this issue Oct 18, 2019 · 0 comments
Open

前端性能优化总结 #9

Roe-Tian opened this issue Oct 18, 2019 · 0 comments
Labels
前端性能优化 前端网页性能优化

Comments

@Roe-Tian
Copy link
Owner

1.页面重构是什么?

网站重构: 在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。
也就是说是在不改变UI的情况下,对网站进行优化,在扩展的同时保持一致的UI。

对于传统的网站来说重构通常是:

表格(table)布局改为DIV+CSS
使网站前端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)
对于移动平台的优化
针对于SEO进行优化
深层次的网站重构应该考虑的方面

减少代码间的耦合
让代码保持弹性
严格按规范编写代码
设计可扩展的API
代替旧有的框架、语言(如VB)
增强用户体验
通常来说对于速度的优化也包含在重构中

压缩JS、CSS、image等前端资源(通常是由服务器来解决)
程序的性能优化(如数据读写)
采用CDN来加速资源加载
对于JS DOM的优化
HTTP服务器的文件缓存

2.什么叫优雅降级和渐进增强?

优雅降级: Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会针对旧版本的IE进行降级处理了,使之在旧式浏览器上以某种形式降级体验却不至于完全不能用。

如:border-shadow

渐进增强: 从被所有浏览器支持的基本功能开始,逐步地添加那些只有新版本浏览器才支持的功能,向页面增加不影响基础浏览器的额外样式和功能的。当浏览器支持时,它们会自动地呈现出来并发挥作用。

如:默认使用flash上传,但如果浏览器支持 HTML5 的文件上传功能,则使用HTML5实现更好的体验;

3.前端性能优化的方法

1、减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。

2、前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

3、用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。

4、当需要设置的样式很多时设置className而不是直接操作style。

5、少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

6、避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。

7、图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。

8、避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢。

4.页面从输入 URL 到页面加载显示完成

详细版:

浏览器会开启一个线程来处理这个请求,对 URL 分析判断如果是 http 协议就按照 Web 方式来处理;

调用浏览器内核中的对应方法,比如 WebView 中的 loadUrl 方法;

通过DNS解析获取网址的IP地址,设置 UA 等信息发出第二个GET请求;

进行HTTP协议会话,客户端发送报头(请求报头);

进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS 等服务器;

进入部署好的后端应用,如 PHP、Java、JavaScript、Python 等,找到对应的请求处理;

处理结束回馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304;

浏览器开始下载html文档(响应报头,状态码200),同时使用缓存;

文档树建立,根据标记请求所需指定MIME类型的文件(比如css、js),同时设置了cookie;

页面开始渲染DOM,JS根据DOM API操作DOM,执行事件绑定等,页面显示完成。

简洁版:

浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求;

服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、JS、CSS、图象等);

浏览器对加载到的资源(HTML、JS、CSS等)进行语法解析,建立相应的内部数据结构(如HTML的DOM);

载入解析到的资源文件,渲染页面,完成。

5.平时如何管理你的项目

先期团队必须确定好全局样式(globe.css),编码模式(utf-8) 等;

编写习惯必须一致(例如都是采用继承式的写法,单样式都写成一行);

标注样式编写人,各模块都及时标注(标注关键样式调用的地方);

页面进行标注(例如 页面 模块 开始和结束);

CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css);

JS 分文件夹存放 命名以该JS功能为准的英文翻译。

图片采用整合的 images.png png8 格式文件使用 尽量整合在一起使用方便将来的管理

@Roe-Tian Roe-Tian added the 前端性能优化 前端网页性能优化 label Oct 18, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
前端性能优化 前端网页性能优化
Projects
None yet
Development

No branches or pull requests

1 participant